[PATCH 2.6.9] KSEG/CKSEG fixes

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



The following is needed to get an SB1250 to compile & boot in 64bit
mode (briefly tested).

Signed-off-by: Tom Rini <trini@xxxxxxxxxxxxxxxxxxx>

--- linux-2.6.9.orig/arch/mips/sibyte/sb1250/irq_handler.S
+++ linux-2.6.9/arch/mips/sibyte/sb1250/irq_handler.S
@@ -121,9 +121,14 @@
 	/*
 	 * Default...we've hit an IP[2] interrupt, which means we've got to
 	 * check the 1250 interrupt registers to figure out what to do
-	 * Need to detect which CPU we're on, now that smp_affinity is supported.
+	 * Need to detect which CPU we're on, now that smp_affinity is
+	 * supported.
 	 */
+#ifdef CONFIG_MIPS64
+	PTR_LA	v0, CKSEG1 + A_IMR_CPU0_BASE
+#else
 	PTR_LA	v0, KSEG1 + A_IMR_CPU0_BASE
+#endif
 #ifdef CONFIG_SMP
 	lw	t1, TI_CPU($28)
 	sll	t1, IMR_REGISTER_SPACING_SHIFT
--- linux-2.6.9.orig/arch/mips/mm/c-sb1.c
+++ linux-2.6.9/arch/mips/mm/c-sb1.c
@@ -488,7 +488,11 @@ void ld_mmu_sb1(void)
 	/* Special cache error handler for SB1 */
 	memcpy((void *)(CAC_BASE   + 0x100), &except_vec2_sb1, 0x80);
 	memcpy((void *)(UNCAC_BASE + 0x100), &except_vec2_sb1, 0x80);
+#ifdef CONFIG_MIPS64
+	memcpy((void *)CKSEG1ADDR(&handle_vec2_sb1), &handle_vec2_sb1, 0x80);
+#else
 	memcpy((void *)KSEG1ADDR(&handle_vec2_sb1), &handle_vec2_sb1, 0x80);
+#endif
 
 	probe_cache_sizes();
 
--- linux-2.6.9.orig/drivers/net/sb1250-mac.c
+++ linux-2.6.9/drivers/net/sb1250-mac.c
@@ -2879,8 +2879,13 @@ sbmac_init_module(void)
 		dev->mem_end = 0;
 		if (sbmac_init(dev, idx)) {
 			port = A_MAC_CHANNEL_BASE(idx);
+#ifdef CONFIG_MIPS64
+			SBMAC_WRITECSR(CKSEG1ADDR(port+R_MAC_ETHERNET_ADDR),
+					sbmac_orig_hwaddr[idx] );
+#else
 			SBMAC_WRITECSR(KSEG1ADDR(port+R_MAC_ETHERNET_ADDR),
 					sbmac_orig_hwaddr[idx] );
+#endif
 			free_netdev(dev);
 			continue;
 		}
--- linux-2.6.9.orig/arch/mips/mm/tlb-sb1.c
+++ linux-2.6.9/arch/mips/mm/tlb-sb1.c
@@ -26,14 +26,14 @@
 #ifdef CONFIG_MIPS32
 extern void except_vec0_sb1(void);
 extern void except_vec1_generic(void);
+#define UNIQUE_ENTRYHI(idx) (KSEG0 + ((idx) << (PAGE_SHIFT + 1)))
 #endif
 #ifdef CONFIG_MIPS64
 extern void except_vec0_generic(void);
 extern void except_vec1_sb1(void);
+#define UNIQUE_ENTRYHI(idx) (CKSEG0 + ((idx) << (PAGE_SHIFT + 1)))
 #endif
 
-#define UNIQUE_ENTRYHI(idx) (KSEG0 + ((idx) << (PAGE_SHIFT + 1)))
-
 /* Dump the current entry* and pagemask registers */
 static inline void dump_cur_tlb_regs(void)
 {

-- 
Tom Rini
http://gate.crashing.org/~trini/


[Index of Archives]     [Linux MIPS Home]     [LKML Archive]     [Linux ARM Kernel]     [Linux ARM]     [Linux]     [Git]     [Yosemite News]     [Linux SCSI]     [Linux Hams]

  Powered by Linux