x86: get rid of pt_regs argument of iopl(2)
Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
This commit is contained in:
parent
ea93a6e2e7
commit
b3af11afe0
@ -467,7 +467,6 @@ GLOBAL(\label)
|
|||||||
PTREGSCALL stub32_execve, compat_sys_execve, %rcx
|
PTREGSCALL stub32_execve, compat_sys_execve, %rcx
|
||||||
PTREGSCALL stub32_fork, sys_fork, %rdi
|
PTREGSCALL stub32_fork, sys_fork, %rdi
|
||||||
PTREGSCALL stub32_vfork, sys_vfork, %rdi
|
PTREGSCALL stub32_vfork, sys_vfork, %rdi
|
||||||
PTREGSCALL stub32_iopl, sys_iopl, %rsi
|
|
||||||
|
|
||||||
ALIGN
|
ALIGN
|
||||||
GLOBAL(stub32_clone)
|
GLOBAL(stub32_clone)
|
||||||
|
@ -18,7 +18,7 @@
|
|||||||
/* Common in X86_32 and X86_64 */
|
/* Common in X86_32 and X86_64 */
|
||||||
/* kernel/ioport.c */
|
/* kernel/ioport.c */
|
||||||
asmlinkage long sys_ioperm(unsigned long, unsigned long, int);
|
asmlinkage long sys_ioperm(unsigned long, unsigned long, int);
|
||||||
long sys_iopl(unsigned int, struct pt_regs *);
|
asmlinkage long sys_iopl(unsigned int);
|
||||||
|
|
||||||
/* kernel/ldt.c */
|
/* kernel/ldt.c */
|
||||||
asmlinkage int sys_modify_ldt(int, void __user *, unsigned long);
|
asmlinkage int sys_modify_ldt(int, void __user *, unsigned long);
|
||||||
|
@ -738,7 +738,6 @@ ENTRY(ptregs_##name) ; \
|
|||||||
CFI_ENDPROC; \
|
CFI_ENDPROC; \
|
||||||
ENDPROC(ptregs_##name)
|
ENDPROC(ptregs_##name)
|
||||||
|
|
||||||
PTREGSCALL1(iopl)
|
|
||||||
PTREGSCALL0(sigreturn)
|
PTREGSCALL0(sigreturn)
|
||||||
PTREGSCALL0(rt_sigreturn)
|
PTREGSCALL0(rt_sigreturn)
|
||||||
PTREGSCALL2(vm86)
|
PTREGSCALL2(vm86)
|
||||||
|
@ -828,23 +828,6 @@ int_restore_rest:
|
|||||||
CFI_ENDPROC
|
CFI_ENDPROC
|
||||||
END(system_call)
|
END(system_call)
|
||||||
|
|
||||||
/*
|
|
||||||
* Certain special system calls that need to save a complete full stack frame.
|
|
||||||
*/
|
|
||||||
.macro PTREGSCALL label,func,arg
|
|
||||||
ENTRY(\label)
|
|
||||||
PARTIAL_FRAME 1 8 /* offset 8: return address */
|
|
||||||
subq $REST_SKIP, %rsp
|
|
||||||
CFI_ADJUST_CFA_OFFSET REST_SKIP
|
|
||||||
call save_rest
|
|
||||||
DEFAULT_FRAME 0 8 /* offset 8: return address */
|
|
||||||
leaq 8(%rsp), \arg /* pt_regs pointer */
|
|
||||||
call \func
|
|
||||||
jmp ptregscall_common
|
|
||||||
CFI_ENDPROC
|
|
||||||
END(\label)
|
|
||||||
.endm
|
|
||||||
|
|
||||||
.macro FORK_LIKE func
|
.macro FORK_LIKE func
|
||||||
ENTRY(stub_\func)
|
ENTRY(stub_\func)
|
||||||
CFI_STARTPROC
|
CFI_STARTPROC
|
||||||
@ -861,10 +844,22 @@ ENTRY(stub_\func)
|
|||||||
END(stub_\func)
|
END(stub_\func)
|
||||||
.endm
|
.endm
|
||||||
|
|
||||||
|
.macro FIXED_FRAME label,func
|
||||||
|
ENTRY(\label)
|
||||||
|
CFI_STARTPROC
|
||||||
|
PARTIAL_FRAME 0 8 /* offset 8: return address */
|
||||||
|
FIXUP_TOP_OF_STACK %r11, 8-ARGOFFSET
|
||||||
|
call \func
|
||||||
|
RESTORE_TOP_OF_STACK %r11, 8-ARGOFFSET
|
||||||
|
ret
|
||||||
|
CFI_ENDPROC
|
||||||
|
END(\label)
|
||||||
|
.endm
|
||||||
|
|
||||||
FORK_LIKE clone
|
FORK_LIKE clone
|
||||||
FORK_LIKE fork
|
FORK_LIKE fork
|
||||||
FORK_LIKE vfork
|
FORK_LIKE vfork
|
||||||
PTREGSCALL stub_iopl, sys_iopl, %rsi
|
FIXED_FRAME stub_iopl, sys_iopl
|
||||||
|
|
||||||
ENTRY(ptregscall_common)
|
ENTRY(ptregscall_common)
|
||||||
DEFAULT_FRAME 1 8 /* offset 8: return address */
|
DEFAULT_FRAME 1 8 /* offset 8: return address */
|
||||||
|
@ -93,8 +93,9 @@ asmlinkage long sys_ioperm(unsigned long from, unsigned long num, int turn_on)
|
|||||||
* on system-call entry - see also fork() and the signal handling
|
* on system-call entry - see also fork() and the signal handling
|
||||||
* code.
|
* code.
|
||||||
*/
|
*/
|
||||||
long sys_iopl(unsigned int level, struct pt_regs *regs)
|
SYSCALL_DEFINE1(iopl, unsigned int, level)
|
||||||
{
|
{
|
||||||
|
struct pt_regs *regs = current_pt_regs();
|
||||||
unsigned int old = (regs->flags >> 12) & 3;
|
unsigned int old = (regs->flags >> 12) & 3;
|
||||||
struct thread_struct *t = ¤t->thread;
|
struct thread_struct *t = ¤t->thread;
|
||||||
|
|
||||||
|
@ -116,7 +116,7 @@
|
|||||||
107 i386 lstat sys_newlstat compat_sys_newlstat
|
107 i386 lstat sys_newlstat compat_sys_newlstat
|
||||||
108 i386 fstat sys_newfstat compat_sys_newfstat
|
108 i386 fstat sys_newfstat compat_sys_newfstat
|
||||||
109 i386 olduname sys_uname
|
109 i386 olduname sys_uname
|
||||||
110 i386 iopl ptregs_iopl stub32_iopl
|
110 i386 iopl sys_iopl
|
||||||
111 i386 vhangup sys_vhangup
|
111 i386 vhangup sys_vhangup
|
||||||
112 i386 idle
|
112 i386 idle
|
||||||
113 i386 vm86old ptregs_vm86old sys32_vm86_warning
|
113 i386 vm86old ptregs_vm86old sys32_vm86_warning
|
||||||
|
@ -24,7 +24,6 @@
|
|||||||
|
|
||||||
#define old_mmap sys_old_mmap
|
#define old_mmap sys_old_mmap
|
||||||
|
|
||||||
#define ptregs_iopl sys_iopl
|
|
||||||
#define ptregs_vm86old sys_vm86old
|
#define ptregs_vm86old sys_vm86old
|
||||||
#define ptregs_vm86 sys_vm86
|
#define ptregs_vm86 sys_vm86
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user