[PATCH] systemcfg is now a pointer
Jimi Xenidis
jimix at watson.ibm.com
Fri Sep 2 01:57:10 EST 2005
This is a resend, better explaination.
The following patch "fixes" 2 issues:
1) use PLATFORM_LPAR bit to test if running in LPAR mode
2) systemcfg pointer is assigned from static data in
arch/ppc64/kernel/pacaData.c. The file arch/ppc64/kernel/head.S
now refers to is using the GOT binding to the pointer and hence
must deref it.
let me know if you'd like separate diffs.
Signed-off-by: Jimi Xenidis <jimix at watson.ibm.com>
diff -r e783ced09546 arch/ppc64/kernel/head.S
--- a/arch/ppc64/kernel/head.S Thu Aug 18 22:16:12 2005
+++ b/arch/ppc64/kernel/head.S Sat Aug 20 12:10:24 2005
@@ -1753,8 +1753,9 @@
#else
/* set the ASR */
ld r3,systemcfg at got(r2) /* r3 = ptr to systemcfg */
+ ld r3,0(r3)
lwz r3,PLATFORM(r3) /* r3 = platform flags */
- cmpldi r3,PLATFORM_PSERIES_LPAR
+ andi. r3,r3,PLATFORM_LPAR /* Test if bit 0 is set (LPAR bit) */
bne 98f
mfspr r3,PVR
srwi r3,r3,16
@@ -1916,8 +1917,9 @@
ld r3,PACASTABREAL(r13)
ori r4,r3,1 /* turn on valid bit */
ld r3,systemcfg at got(r2) /* r3 = ptr to systemcfg */
+ ld r3,0(r3)
lwz r3,PLATFORM(r3) /* r3 = platform flags */
- cmpldi r3,PLATFORM_PSERIES_LPAR
+ andi. r3,r3,PLATFORM_LPAR /* Test if bit 0 is set (LPAR bit) */
bne 98f
mfspr r3,PVR
srwi r3,r3,16
@@ -1935,9 +1937,10 @@
99:
/* Set SDR1 (hash table pointer) */
ld r3,systemcfg at got(r2) /* r3 = ptr to systemcfg */
+ ld r3,0(r3)
lwz r3,PLATFORM(r3) /* r3 = platform flags */
/* Test if bit 0 is set (LPAR bit) */
- andi. r3,r3,0x1
+ andi. r3,r3,PLATFORM_LPAR
bne 98f
LOADADDR(r6,_SDR1) /* Only if NOT LPAR */
sub r6,r6,r26
More information about the Linuxppc64-dev
mailing list