diff options
Diffstat (limited to 'arch/um/sys-x86_64/signal.c')
-rw-r--r-- | arch/um/sys-x86_64/signal.c | 35 |
1 files changed, 9 insertions, 26 deletions
diff --git a/arch/um/sys-x86_64/signal.c b/arch/um/sys-x86_64/signal.c index 2d6cdd260c26..a06d66d0c409 100644 --- a/arch/um/sys-x86_64/signal.c +++ b/arch/um/sys-x86_64/signal.c | |||
@@ -16,12 +16,12 @@ | |||
16 | #include "frame_kern.h" | 16 | #include "frame_kern.h" |
17 | #include "skas.h" | 17 | #include "skas.h" |
18 | 18 | ||
19 | void copy_sc(union uml_pt_regs *regs, void *from) | 19 | void copy_sc(struct uml_pt_regs *regs, void *from) |
20 | { | 20 | { |
21 | struct sigcontext *sc = from; | 21 | struct sigcontext *sc = from; |
22 | 22 | ||
23 | #define GETREG(regs, regno, sc, regname) \ | 23 | #define GETREG(regs, regno, sc, regname) \ |
24 | (regs)->skas.regs[(regno) / sizeof(unsigned long)] = (sc)->regname | 24 | (regs)->regs[(regno) / sizeof(unsigned long)] = (sc)->regname |
25 | 25 | ||
26 | GETREG(regs, R8, sc, r8); | 26 | GETREG(regs, R8, sc, r8); |
27 | GETREG(regs, R9, sc, r9); | 27 | GETREG(regs, R9, sc, r9); |
@@ -46,13 +46,13 @@ void copy_sc(union uml_pt_regs *regs, void *from) | |||
46 | #undef GETREG | 46 | #undef GETREG |
47 | } | 47 | } |
48 | 48 | ||
49 | static int copy_sc_from_user_skas(struct pt_regs *regs, | 49 | static int copy_sc_from_user(struct pt_regs *regs, |
50 | struct sigcontext __user *from) | 50 | struct sigcontext __user *from) |
51 | { | 51 | { |
52 | int err = 0; | 52 | int err = 0; |
53 | 53 | ||
54 | #define GETREG(regs, regno, sc, regname) \ | 54 | #define GETREG(regs, regno, sc, regname) \ |
55 | __get_user((regs)->regs.skas.regs[(regno) / sizeof(unsigned long)], \ | 55 | __get_user((regs)->regs.regs[(regno) / sizeof(unsigned long)], \ |
56 | &(sc)->regname) | 56 | &(sc)->regname) |
57 | 57 | ||
58 | err |= GETREG(regs, R8, from, r8); | 58 | err |= GETREG(regs, R8, from, r8); |
@@ -80,10 +80,9 @@ static int copy_sc_from_user_skas(struct pt_regs *regs, | |||
80 | return err; | 80 | return err; |
81 | } | 81 | } |
82 | 82 | ||
83 | int copy_sc_to_user_skas(struct sigcontext __user *to, | 83 | static int copy_sc_to_user(struct sigcontext __user *to, |
84 | struct _fpstate __user *to_fp, | 84 | struct _fpstate __user *to_fp, struct pt_regs *regs, |
85 | struct pt_regs *regs, unsigned long mask, | 85 | unsigned long mask, unsigned long sp) |
86 | unsigned long sp) | ||
87 | { | 86 | { |
88 | struct faultinfo * fi = ¤t->thread.arch.faultinfo; | 87 | struct faultinfo * fi = ¤t->thread.arch.faultinfo; |
89 | int err = 0; | 88 | int err = 0; |
@@ -92,7 +91,7 @@ int copy_sc_to_user_skas(struct sigcontext __user *to, | |||
92 | err |= __put_user(0, &to->fs); | 91 | err |= __put_user(0, &to->fs); |
93 | 92 | ||
94 | #define PUTREG(regs, regno, sc, regname) \ | 93 | #define PUTREG(regs, regno, sc, regname) \ |
95 | __put_user((regs)->regs.skas.regs[(regno) / sizeof(unsigned long)], \ | 94 | __put_user((regs)->regs.regs[(regno) / sizeof(unsigned long)], \ |
96 | &(sc)->regname) | 95 | &(sc)->regname) |
97 | 96 | ||
98 | err |= PUTREG(regs, RDI, to, rdi); | 97 | err |= PUTREG(regs, RDI, to, rdi); |
@@ -130,22 +129,6 @@ int copy_sc_to_user_skas(struct sigcontext __user *to, | |||
130 | return(err); | 129 | return(err); |
131 | } | 130 | } |
132 | 131 | ||
133 | static int copy_sc_from_user(struct pt_regs *to, void __user *from) | ||
134 | { | ||
135 | int ret; | ||
136 | |||
137 | ret = copy_sc_from_user_skas(to, from); | ||
138 | return(ret); | ||
139 | } | ||
140 | |||
141 | static int copy_sc_to_user(struct sigcontext __user *to, | ||
142 | struct _fpstate __user *fp, | ||
143 | struct pt_regs *from, unsigned long mask, | ||
144 | unsigned long sp) | ||
145 | { | ||
146 | return copy_sc_to_user_skas(to, fp, from, mask, sp); | ||
147 | } | ||
148 | |||
149 | struct rt_sigframe | 132 | struct rt_sigframe |
150 | { | 133 | { |
151 | char __user *pretcode; | 134 | char __user *pretcode; |