From: Benjamin Herrenschmidt <benh@kernel.crashing.org>

This patch fixes si_addr on some segfaults in 64 bits mode, it used to be
bogus (address not passed to do_page_fault by the asm code after a failure
to set an SLB entry).


---

 25-akpm/arch/ppc64/kernel/head.S |    2 ++
 1 files changed, 2 insertions(+)

diff -puN arch/ppc64/kernel/head.S~ppc64-si_addr-fix arch/ppc64/kernel/head.S
--- 25/arch/ppc64/kernel/head.S~ppc64-si_addr-fix	2004-04-03 02:59:49.441836640 -0800
+++ 25-akpm/arch/ppc64/kernel/head.S	2004-04-03 02:59:49.445836032 -0800
@@ -767,6 +767,7 @@ DataAccessSLB_common:
 	beq     fast_exception_return   /* Return if we succeeded */
 	addi	r3,r1,STACK_FRAME_OVERHEAD
 	DO_COPY_EE()
+	ld      r4,_DAR(r1)
 	li	r6,0x380
 	li	r5,0
 	bl      .save_remaining_regs
@@ -810,6 +811,7 @@ InstructionAccessSLB_common:
 
 	addi	r3,r1,STACK_FRAME_OVERHEAD
 	DO_COPY_EE()
+	mr      r4,r22                  /* SRR0 = NIA        */
 	li	r6,0x480
 	li	r5,0
 	bl      .save_remaining_regs

_