[PATCH] ppc64: Fix return value of some vDSO calls
authorBenjamin Herrenschmidt <benh@kernel.crashing.org>
Thu, 28 Apr 2005 01:04:45 +0000 (18:04 -0700)
committerLinus Torvalds <torvalds@ppc970.osdl.org>
Thu, 28 Apr 2005 01:04:45 +0000 (18:04 -0700)
The ppc vDSO would not properly clear the return value for some calls,
which will be a problem when interfacing those calls with glibc. This
should be fixed before 2.6.12 is released (as it is the first kernel
with the ppc vDSO) so that we don't have to play with symbol versioning
and ugly workarounds.

Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
arch/ppc64/kernel/vdso32/cacheflush.S
arch/ppc64/kernel/vdso32/gettimeofday.S
arch/ppc64/kernel/vdso64/cacheflush.S

index c74fddb6afd4d7d1fdfdb7378bfcf57000391a36..0ed7ea721715be2197e4df3433ea081a09c75ff1 100644 (file)
@@ -47,6 +47,7 @@ V_FUNCTION_BEGIN(__kernel_sync_dicache)
        addi    r6,r6,128
        bdnz    1b
        isync
+       li      r3,0
        blr
   .cfi_endproc
 V_FUNCTION_END(__kernel_sync_dicache)
@@ -59,6 +60,7 @@ V_FUNCTION_BEGIN(__kernel_sync_dicache_p5)
   .cfi_startproc
        sync
        isync
+       li      r3,0
        blr
   .cfi_endproc
 V_FUNCTION_END(__kernel_sync_dicache_p5)
index ca7f415195c4029a4ca2516b71b0cbd107cd088d..2b48bf1fb109fac828fc58839c12d86ee9c636af 100644 (file)
@@ -58,6 +58,7 @@ V_FUNCTION_BEGIN(__kernel_gettimeofday)
        stw     r5,TZONE_TZ_DSTTIME(r11)
 
 1:     mtlr    r12
+       li      r3,0
        blr
 
 2:     mr      r3,r10
index d9696ffcf334895cb35395761e4fbb4aa3dc16c9..e0725b7b70034b71bdbbf4074a1122a0fc4834d3 100644 (file)
@@ -47,6 +47,7 @@ V_FUNCTION_BEGIN(__kernel_sync_dicache)
        addi    r6,r6,128
        bdnz    1b
        isync
+       li      r3,0
        blr
   .cfi_endproc
 V_FUNCTION_END(__kernel_sync_dicache)
@@ -59,6 +60,7 @@ V_FUNCTION_BEGIN(__kernel_sync_dicache_p5)
   .cfi_startproc
        sync
        isync
+       li      r3,0
        blr
   .cfi_endproc
 V_FUNCTION_END(__kernel_sync_dicache_p5)