mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2025-01-15 18:04:36 +00:00
x86: don't save ebx in putuser_32.S.
Clobber it in the inline asm macros, and let the compiler do this for us. Signed-off-by: Glauber Costa <gcosta@redhat.com> Signed-off-by: H. Peter Anvin <hpa@zytor.com> Signed-off-by: Ingo Molnar <mingo@elte.hu>
This commit is contained in:
parent
6c2d458680
commit
268cf048c8
@ -26,14 +26,8 @@
|
||||
*/
|
||||
|
||||
#define ENTER CFI_STARTPROC ; \
|
||||
pushl %ebx ; \
|
||||
CFI_ADJUST_CFA_OFFSET 4 ; \
|
||||
CFI_REL_OFFSET ebx, 0 ; \
|
||||
GET_THREAD_INFO(%ebx)
|
||||
#define EXIT popl %ebx ; \
|
||||
CFI_ADJUST_CFA_OFFSET -4 ; \
|
||||
CFI_RESTORE ebx ; \
|
||||
ret ; \
|
||||
#define EXIT ret ; \
|
||||
CFI_ENDPROC
|
||||
|
||||
.text
|
||||
@ -81,10 +75,7 @@ ENTRY(__put_user_8)
|
||||
ENDPROC(__put_user_8)
|
||||
|
||||
bad_put_user:
|
||||
CFI_STARTPROC simple
|
||||
CFI_DEF_CFA esp, 2*4
|
||||
CFI_OFFSET eip, -1*4
|
||||
CFI_OFFSET ebx, -2*4
|
||||
CFI_STARTPROC
|
||||
movl $-14,%eax
|
||||
EXIT
|
||||
END(bad_put_user)
|
||||
|
@ -188,23 +188,23 @@ extern void __put_user_8(void);
|
||||
|
||||
#define __put_user_1(x, ptr) \
|
||||
asm volatile("call __put_user_1" : "=a" (__ret_pu) \
|
||||
: "0" ((typeof(*(ptr)))(x)), "c" (ptr))
|
||||
: "0" ((typeof(*(ptr)))(x)), "c" (ptr) : "ebx")
|
||||
|
||||
#define __put_user_2(x, ptr) \
|
||||
asm volatile("call __put_user_2" : "=a" (__ret_pu) \
|
||||
: "0" ((typeof(*(ptr)))(x)), "c" (ptr))
|
||||
: "0" ((typeof(*(ptr)))(x)), "c" (ptr) : "ebx")
|
||||
|
||||
#define __put_user_4(x, ptr) \
|
||||
asm volatile("call __put_user_4" : "=a" (__ret_pu) \
|
||||
: "0" ((typeof(*(ptr)))(x)), "c" (ptr))
|
||||
: "0" ((typeof(*(ptr)))(x)), "c" (ptr) : "ebx")
|
||||
|
||||
#define __put_user_8(x, ptr) \
|
||||
asm volatile("call __put_user_8" : "=a" (__ret_pu) \
|
||||
: "A" ((typeof(*(ptr)))(x)), "c" (ptr))
|
||||
: "A" ((typeof(*(ptr)))(x)), "c" (ptr) : "ebx")
|
||||
|
||||
#define __put_user_X(x, ptr) \
|
||||
asm volatile("call __put_user_X" : "=a" (__ret_pu) \
|
||||
: "c" (ptr))
|
||||
: "c" (ptr): "ebx")
|
||||
|
||||
/**
|
||||
* put_user: - Write a simple value into user space.
|
||||
|
Loading…
x
Reference in New Issue
Block a user