Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 3bd4c902 authored by Maciej W. Rozycki's avatar Maciej W. Rozycki Committed by Ralf Baechle
Browse files

Deal with the bloody KSEG vs CKSEG horror...

parent 902d21d5
Loading
Loading
Loading
Loading
+2 −1
Original line number Diff line number Diff line
@@ -144,7 +144,8 @@ static int dec_ecc_be_backend(struct pt_regs *regs, int is_fixup, int invoker)
			} else if (!sngl) {
				status = dbestr;
			} else {
				volatile u32 *ptr = (void *)KSEG1ADDR(address);
				volatile u32 *ptr =
					(void *)CKSEG1ADDR(address);

				*ptr = *ptr;		/* Rewrite. */
				iob();
+7 −7
Original line number Diff line number Diff line
@@ -35,22 +35,22 @@ static inline void pmax_setup_memory_region(void)
	extern char genexcept_early;

	/* Install exception handler */
	memcpy(&old_handler, (void *)(KSEG0 + 0x80), 0x80);
	memcpy((void *)(KSEG0 + 0x80), &genexcept_early, 0x80);
	memcpy(&old_handler, (void *)(CKSEG0 + 0x80), 0x80);
	memcpy((void *)(CKSEG0 + 0x80), &genexcept_early, 0x80);

	/* read unmapped and uncached (KSEG1)
	 * DECstations have at least 4MB RAM
	 * Assume less than 480MB of RAM, as this is max for 5000/2xx
	 * FIXME this should be replaced by the first free page!
	 */
	for (memory_page = (unsigned char *) KSEG1 + CHUNK_SIZE;
	     (mem_err== 0) && (memory_page < ((unsigned char *) KSEG1+0x1E000000));
	for (memory_page = (unsigned char *)CKSEG1 + CHUNK_SIZE;
	     mem_err == 0 && memory_page < (unsigned char *)CKSEG1 + 0x1e00000;
  	     memory_page += CHUNK_SIZE) {
		dummy = *memory_page;
	}
	memcpy((void *)(KSEG0 + 0x80), &old_handler, 0x80);
	memcpy((void *)(CKSEG0 + 0x80), &old_handler, 0x80);

	add_memory_region(0, (unsigned long)memory_page - KSEG1 - CHUNK_SIZE,
	add_memory_region(0, (unsigned long)memory_page - CKSEG1 - CHUNK_SIZE,
			  BOOT_MEM_RAM);
}

@@ -65,7 +65,7 @@ static inline void rex_setup_memory_region(void)
	memmap *bm;

	/* some free 64k */
	bm = (memmap *)KSEG0ADDR(0x28000);
	bm = (memmap *)CKSEG0ADDR(0x28000);

	bitmap_size = rex_getbitmap(bm);

+1 −1
Original line number Diff line number Diff line
@@ -14,7 +14,7 @@ typedef void ATTRIB_NORET (* noret_func_t)(void);

static inline void ATTRIB_NORET back_to_prom(void)
{
	noret_func_t func = (void *) KSEG1ADDR(0x1fc00000);
	noret_func_t func = (void *)CKSEG1ADDR(0x1fc00000);

	func();
}
+1 −2
Original line number Diff line number Diff line
@@ -197,7 +197,7 @@ void __init tc_init(void)
	}

	info = (tcinfo *) rex_gettcinfo();
	slot0addr = (unsigned long)KSEG1ADDR(rex_slot_address(0));
	slot0addr = (unsigned long)CKSEG1ADDR(rex_slot_address(0));

	switch (mips_machtype) {
	case MACH_DS5000_200:
@@ -245,7 +245,6 @@ void __init tc_init(void)
					tc_bus[i].name, tc_bus[i].firmware);
			}
#endif
		ioport_resource.end = KSEG2 - 1;
	}
}

+3 −3
Original line number Diff line number Diff line
@@ -1637,21 +1637,21 @@ static void __init probe_sccs(void)
#ifdef CONFIG_MACH_DECSTATION
	case MACH_DS5000_2X0:
	case MACH_DS5900:
		system_base = KSEG1ADDR(0x1f800000);
		system_base = CKSEG1ADDR(0x1f800000);
		n_chips = 2;
		zs_parms = &ds_parms;
		zs_parms->irq0 = dec_interrupt[DEC_IRQ_SCC0];
		zs_parms->irq1 = dec_interrupt[DEC_IRQ_SCC1];
		break;
	case MACH_DS5000_1XX:
		system_base = KSEG1ADDR(0x1c000000);
		system_base = CKSEG1ADDR(0x1c000000);
		n_chips = 2;
		zs_parms = &ds_parms;
		zs_parms->irq0 = dec_interrupt[DEC_IRQ_SCC0];
		zs_parms->irq1 = dec_interrupt[DEC_IRQ_SCC1];
		break;
	case MACH_DS5000_XX:
		system_base = KSEG1ADDR(0x1c000000);
		system_base = CKSEG1ADDR(0x1c000000);
		n_chips = 1;
		zs_parms = &ds_parms;
		zs_parms->irq0 = dec_interrupt[DEC_IRQ_SCC0];
Loading