linux_dsm_epyc7002/arch
Olaf Hering 6088857b16 [PATCH] correct the comment about stackpointer alignment in __boot_from_prom
The address of variable val in prom_init_stdout is passed to prom_getprop.
prom_getprop casts the pointer to u32 and passes it to call_prom in the hope
that OpenFirmware stores something there.
But the pointer is truncated in the lower bits and the expected value is
stored somewhere else.

In my testing I had a stackpointer of 0x0023e6b4. val was at offset 120,
wich has address 0x0023e72c. But the value passed to OF was 0x0023e728.

c00000000040b710:       3b 01 00 78     addi    r24,r1,120
...
c00000000040b754:       57 08 00 38     rlwinm  r8,r24,0,0,28
...
c00000000040b784:       80 01 00 78     lwz     r0,120(r1)
...
c00000000040b798:       90 1b 00 0c     stw     r0,12(r27)
...

The stackpointer came from 32bit code.
The chain was yaboot -> zImage -> vmlinux

PowerMac OpenFirmware does appearently not handle the ELF sections
correctly.  If yaboot was compiled in
/usr/src/packages/BUILD/lilo-10.1.1/yaboot, then the stackpointer is
unaligned. But the stackpointer is correct if yaboot is compiled in
/tmp/yaboot.

This bug triggered since 2.6.15, now prom_getprop is an inline
function. gcc clears the lower bits, instead of just clearing the
upper 32 bits.

Signed-off-by: Olaf Hering <olh@suse.de>
Signed-off-by: Paul Mackerras <paulus@samba.org>
2006-03-27 14:48:32 +11:00
..
alpha [PATCH] bitops: alpha: use generic bitops 2006-03-26 08:57:11 -08:00
arm [PATCH] bitops: arm: use generic bitops 2006-03-26 08:57:12 -08:00
arm26 [PATCH] bitops: arm26: use generic bitops 2006-03-26 08:57:12 -08:00
cris [PATCH] bitops: cris: use generic bitops 2006-03-26 08:57:12 -08:00
frv [PATCH] bitops: frv: use generic bitops 2006-03-26 08:57:12 -08:00
h8300 [PATCH] bitops: h8300: use generic bitops 2006-03-26 08:57:12 -08:00
i386 [PATCH] bitops: i386: use generic bitops 2006-03-26 08:57:12 -08:00
ia64 [PATCH] bitops: ia64: make partial_page.bitmap an unsigned long 2006-03-26 08:57:15 -08:00
m32r [PATCH] bitops: m32r: use generic bitops 2006-03-26 08:57:12 -08:00
m68k [PATCH] bitops: m68k: use generic bitops 2006-03-26 08:57:12 -08:00
m68knommu [PATCH] bitops: m68knommu: use generic bitops 2006-03-26 08:57:13 -08:00
mips [PATCH] bitops: mips: use generic bitops 2006-03-26 08:57:13 -08:00
parisc [PATCH] bitops: parisc: use generic bitops 2006-03-26 08:57:14 -08:00
powerpc [PATCH] correct the comment about stackpointer alignment in __boot_from_prom 2006-03-27 14:48:32 +11:00
ppc [PATCH] ppc: fix undefined reference to hweight32 2006-03-26 08:57:13 -08:00
s390 [PATCH] bitops: s390: use generic bitops 2006-03-26 08:57:14 -08:00
sh [PATCH] bitops: sh: use generic bitops 2006-03-26 08:57:14 -08:00
sh64 [PATCH] bitops: sh64: use generic bitops 2006-03-26 08:57:14 -08:00
sparc [PATCH] bitops: sparc: use generic bitops 2006-03-26 08:57:14 -08:00
sparc64 [SPARC64]: Kill duplicate exports of string library functions. 2006-03-26 15:30:29 -08:00
um [PATCH] um: fix undefined reference to hweight32 2006-03-26 08:57:09 -08:00
v850 [PATCH] bitops: v850: use generic bitops 2006-03-26 08:57:14 -08:00
x86_64 [PATCH] bitops: x86_64: use generic bitops 2006-03-26 08:57:14 -08:00
xtensa [PATCH] bitops: xtensa: use generic bitops 2006-03-26 08:57:15 -08:00