From dc2b66c84b5aa00dcd7298677f700e7b8e8263cf Mon Sep 17 00:00:00 2001 From: Daniel Hellstrom Date: Mon, 25 Apr 2011 21:43:48 +0000 Subject: [PATCH] --- yaml --- r: 247903 b: refs/heads/master c: 5149bed8912f4030f52feb33326cfe794831b184 h: refs/heads/master i: 247901: 4a6facaa4dba49b236b198f4bc2399417f458d51 247899: d519842f084ef02b80ad5b9fbbceb3bde9c4f214 247895: d44fb39f7439d10cc9633654c1be7e0541a9f554 247887: 35939c6a12494bffecab78a5b45747d240c03c2c 247871: cdfc4fc10cda177833d31172e36745e3e687a59d v: v3 --- [refs] | 2 +- trunk/arch/sparc/include/asm/smp_32.h | 5 +++++ trunk/arch/sparc/include/asm/winmacro.h | 9 +++++++++ 3 files changed, 15 insertions(+), 1 deletion(-) diff --git a/[refs] b/[refs] index cd219eada00a..fd0bf1c8fdeb 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 970def654e9df1ad28ddb466bb1d123a55e1e7e7 +refs/heads/master: 5149bed8912f4030f52feb33326cfe794831b184 diff --git a/trunk/arch/sparc/include/asm/smp_32.h b/trunk/arch/sparc/include/asm/smp_32.h index d82d7f4c0a79..d7837dcb2525 100644 --- a/trunk/arch/sparc/include/asm/smp_32.h +++ b/trunk/arch/sparc/include/asm/smp_32.h @@ -135,6 +135,11 @@ static inline int hard_smp_processor_id(void) __asm__ __volatile__("lda [%g0] ASI_M_VIKING_TMP1, %0\n\t" "nop; nop" : "=&r" (cpuid)); + - leon + __asm__ __volatile__( "rd %asr17, %0\n\t" + "srl %0, 0x1c, %0\n\t" + "nop\n\t" : + "=&r" (cpuid)); See btfixup.h and btfixupprep.c to understand how a blackbox works. */ __asm__ __volatile__("sethi %%hi(___b_hard_smp_processor_id), %0\n\t" diff --git a/trunk/arch/sparc/include/asm/winmacro.h b/trunk/arch/sparc/include/asm/winmacro.h index 5b0a06dc3bcb..a9be04b0d049 100644 --- a/trunk/arch/sparc/include/asm/winmacro.h +++ b/trunk/arch/sparc/include/asm/winmacro.h @@ -103,6 +103,7 @@ st %scratch, [%cur_reg + TI_W_SAVED]; #ifdef CONFIG_SMP +/* Results of LOAD_CURRENT() after BTFIXUP for SUN4M, SUN4D & LEON (comments) */ #define LOAD_CURRENT4M(dest_reg, idreg) \ rd %tbr, %idreg; \ sethi %hi(current_set), %dest_reg; \ @@ -118,6 +119,14 @@ or %dest_reg, %lo(C_LABEL(current_set)), %dest_reg; \ ld [%idreg + %dest_reg], %dest_reg; +#define LOAD_CURRENT_LEON(dest_reg, idreg) \ + rd %asr17, %idreg; \ + sethi %hi(current_set), %dest_reg; \ + srl %idreg, 0x1c, %idreg; \ + or %dest_reg, %lo(current_set), %dest_reg; \ + sll %idreg, 0x2, %idreg; \ + ld [%idreg + %dest_reg], %dest_reg; + /* Blackbox - take care with this... - check smp4m and smp4d before changing this. */ #define LOAD_CURRENT(dest_reg, idreg) \ sethi %hi(___b_load_current), %idreg; \