فهرست منبع

[POWERPC] Fix corruption in hcall9

It looks to me like we are corrupting r12 in the hcall9 function.
Although we have r0 free we cant use offsets against it, so save
away r12 in there instead.  r12 holds the ninth return value from
the hypervisor call, so without this fix, the caller will see the
wrong value for the ninth element in the array that gets the return
values.

Signed-off-by: Anton Blanchard <anton@samba.org>
Signed-off-by: Paul Mackerras <paulus@samba.org>
Anton Blanchard 18 سال پیش
والد
کامیت
ab87e8dc88
1فایلهای تغییر یافته به همراه2 افزوده شده و 1 حذف شده
  1. 2 1
      arch/powerpc/platforms/pseries/hvCall.S

+ 2 - 1
arch/powerpc/platforms/pseries/hvCall.S

@@ -145,6 +145,7 @@ _GLOBAL(plpar_hcall9)
 
 
 	HVSC				/* invoke the hypervisor */
 	HVSC				/* invoke the hypervisor */
 
 
+	mr	r0,r12
 	ld	r12,STK_PARM(r4)(r1)
 	ld	r12,STK_PARM(r4)(r1)
 	std	r4,  0(r12)
 	std	r4,  0(r12)
 	std	r5,  8(r12)
 	std	r5,  8(r12)
@@ -154,7 +155,7 @@ _GLOBAL(plpar_hcall9)
 	std	r9, 40(r12)
 	std	r9, 40(r12)
 	std	r10,48(r12)
 	std	r10,48(r12)
 	std	r11,56(r12)
 	std	r11,56(r12)
-	std	r12,64(r12)
+	std	r0, 64(r12)
 
 
 	HCALL_INST_POSTCALL
 	HCALL_INST_POSTCALL