diff options
author | Hiroshi Shimamoto <h-shimamoto@ct.jp.nec.com> | 2008-11-07 22:25:36 -0500 |
---|---|---|
committer | Ingo Molnar <mingo@elte.hu> | 2008-11-08 04:16:10 -0500 |
commit | 15002fa9bf3a79ac9dcafba7ff308586936088b2 (patch) | |
tree | 47a93c9ac89a3bdcdbdf5c055033dd0de9d2dd14 | |
parent | 8735b7d0a2a6246faa406a8cdd1376bd0e689ba3 (diff) |
x86: signal: cosmetic unification of setup_sigcontext()
Impact: cleanup
Make setup_sigcontext() same.
Signed-off-by: Hiroshi Shimamoto <h-shimamoto@ct.jp.nec.com>
Signed-off-by: Ingo Molnar <mingo@elte.hu>
-rw-r--r-- | arch/x86/kernel/signal_32.c | 32 | ||||
-rw-r--r-- | arch/x86/kernel/signal_64.c | 33 |
2 files changed, 56 insertions, 9 deletions
diff --git a/arch/x86/kernel/signal_32.c b/arch/x86/kernel/signal_32.c index 6a05c74b4084..27a5c8174322 100644 --- a/arch/x86/kernel/signal_32.c +++ b/arch/x86/kernel/signal_32.c | |||
@@ -279,14 +279,20 @@ static int | |||
279 | setup_sigcontext(struct sigcontext __user *sc, void __user *fpstate, | 279 | setup_sigcontext(struct sigcontext __user *sc, void __user *fpstate, |
280 | struct pt_regs *regs, unsigned long mask) | 280 | struct pt_regs *regs, unsigned long mask) |
281 | { | 281 | { |
282 | int tmp, err = 0; | 282 | int err = 0; |
283 | 283 | ||
284 | err |= __put_user(regs->fs, (unsigned int __user *)&sc->fs); | 284 | #ifdef CONFIG_X86_32 |
285 | savesegment(gs, tmp); | 285 | { |
286 | err |= __put_user(tmp, (unsigned int __user *)&sc->gs); | 286 | unsigned int tmp; |
287 | 287 | ||
288 | savesegment(gs, tmp); | ||
289 | err |= __put_user(tmp, (unsigned int __user *)&sc->gs); | ||
290 | } | ||
291 | err |= __put_user(regs->fs, (unsigned int __user *)&sc->fs); | ||
288 | err |= __put_user(regs->es, (unsigned int __user *)&sc->es); | 292 | err |= __put_user(regs->es, (unsigned int __user *)&sc->es); |
289 | err |= __put_user(regs->ds, (unsigned int __user *)&sc->ds); | 293 | err |= __put_user(regs->ds, (unsigned int __user *)&sc->ds); |
294 | #endif /* CONFIG_X86_32 */ | ||
295 | |||
290 | err |= __put_user(regs->di, &sc->di); | 296 | err |= __put_user(regs->di, &sc->di); |
291 | err |= __put_user(regs->si, &sc->si); | 297 | err |= __put_user(regs->si, &sc->si); |
292 | err |= __put_user(regs->bp, &sc->bp); | 298 | err |= __put_user(regs->bp, &sc->bp); |
@@ -295,13 +301,31 @@ setup_sigcontext(struct sigcontext __user *sc, void __user *fpstate, | |||
295 | err |= __put_user(regs->dx, &sc->dx); | 301 | err |= __put_user(regs->dx, &sc->dx); |
296 | err |= __put_user(regs->cx, &sc->cx); | 302 | err |= __put_user(regs->cx, &sc->cx); |
297 | err |= __put_user(regs->ax, &sc->ax); | 303 | err |= __put_user(regs->ax, &sc->ax); |
304 | #ifdef CONFIG_X86_64 | ||
305 | err |= __put_user(regs->r8, &sc->r8); | ||
306 | err |= __put_user(regs->r9, &sc->r9); | ||
307 | err |= __put_user(regs->r10, &sc->r10); | ||
308 | err |= __put_user(regs->r11, &sc->r11); | ||
309 | err |= __put_user(regs->r12, &sc->r12); | ||
310 | err |= __put_user(regs->r13, &sc->r13); | ||
311 | err |= __put_user(regs->r14, &sc->r14); | ||
312 | err |= __put_user(regs->r15, &sc->r15); | ||
313 | #endif /* CONFIG_X86_64 */ | ||
314 | |||
298 | err |= __put_user(current->thread.trap_no, &sc->trapno); | 315 | err |= __put_user(current->thread.trap_no, &sc->trapno); |
299 | err |= __put_user(current->thread.error_code, &sc->err); | 316 | err |= __put_user(current->thread.error_code, &sc->err); |
300 | err |= __put_user(regs->ip, &sc->ip); | 317 | err |= __put_user(regs->ip, &sc->ip); |
318 | #ifdef CONFIG_X86_32 | ||
301 | err |= __put_user(regs->cs, (unsigned int __user *)&sc->cs); | 319 | err |= __put_user(regs->cs, (unsigned int __user *)&sc->cs); |
302 | err |= __put_user(regs->flags, &sc->flags); | 320 | err |= __put_user(regs->flags, &sc->flags); |
303 | err |= __put_user(regs->sp, &sc->sp_at_signal); | 321 | err |= __put_user(regs->sp, &sc->sp_at_signal); |
304 | err |= __put_user(regs->ss, (unsigned int __user *)&sc->ss); | 322 | err |= __put_user(regs->ss, (unsigned int __user *)&sc->ss); |
323 | #else /* !CONFIG_X86_32 */ | ||
324 | err |= __put_user(regs->flags, &sc->flags); | ||
325 | err |= __put_user(regs->cs, &sc->cs); | ||
326 | err |= __put_user(0, &sc->gs); | ||
327 | err |= __put_user(0, &sc->fs); | ||
328 | #endif /* CONFIG_X86_32 */ | ||
305 | 329 | ||
306 | err |= __put_user(fpstate, &sc->fpstate); | 330 | err |= __put_user(fpstate, &sc->fpstate); |
307 | 331 | ||
diff --git a/arch/x86/kernel/signal_64.c b/arch/x86/kernel/signal_64.c index 3868c2a21793..d2307e41fbdb 100644 --- a/arch/x86/kernel/signal_64.c +++ b/arch/x86/kernel/signal_64.c | |||
@@ -157,16 +157,23 @@ asmlinkage long sys_rt_sigreturn(struct pt_regs *regs) | |||
157 | /* | 157 | /* |
158 | * Set up a signal frame. | 158 | * Set up a signal frame. |
159 | */ | 159 | */ |
160 | 160 | static int | |
161 | static inline int | ||
162 | setup_sigcontext(struct sigcontext __user *sc, void __user *fpstate, | 161 | setup_sigcontext(struct sigcontext __user *sc, void __user *fpstate, |
163 | struct pt_regs *regs, unsigned long mask) | 162 | struct pt_regs *regs, unsigned long mask) |
164 | { | 163 | { |
165 | int err = 0; | 164 | int err = 0; |
166 | 165 | ||
167 | err |= __put_user(regs->cs, &sc->cs); | 166 | #ifdef CONFIG_X86_32 |
168 | err |= __put_user(0, &sc->gs); | 167 | { |
169 | err |= __put_user(0, &sc->fs); | 168 | unsigned int tmp; |
169 | |||
170 | savesegment(gs, tmp); | ||
171 | err |= __put_user(tmp, (unsigned int __user *)&sc->gs); | ||
172 | } | ||
173 | err |= __put_user(regs->fs, (unsigned int __user *)&sc->fs); | ||
174 | err |= __put_user(regs->es, (unsigned int __user *)&sc->es); | ||
175 | err |= __put_user(regs->ds, (unsigned int __user *)&sc->ds); | ||
176 | #endif /* CONFIG_X86_32 */ | ||
170 | 177 | ||
171 | err |= __put_user(regs->di, &sc->di); | 178 | err |= __put_user(regs->di, &sc->di); |
172 | err |= __put_user(regs->si, &sc->si); | 179 | err |= __put_user(regs->si, &sc->si); |
@@ -176,6 +183,7 @@ setup_sigcontext(struct sigcontext __user *sc, void __user *fpstate, | |||
176 | err |= __put_user(regs->dx, &sc->dx); | 183 | err |= __put_user(regs->dx, &sc->dx); |
177 | err |= __put_user(regs->cx, &sc->cx); | 184 | err |= __put_user(regs->cx, &sc->cx); |
178 | err |= __put_user(regs->ax, &sc->ax); | 185 | err |= __put_user(regs->ax, &sc->ax); |
186 | #ifdef CONFIG_X86_64 | ||
179 | err |= __put_user(regs->r8, &sc->r8); | 187 | err |= __put_user(regs->r8, &sc->r8); |
180 | err |= __put_user(regs->r9, &sc->r9); | 188 | err |= __put_user(regs->r9, &sc->r9); |
181 | err |= __put_user(regs->r10, &sc->r10); | 189 | err |= __put_user(regs->r10, &sc->r10); |
@@ -184,11 +192,26 @@ setup_sigcontext(struct sigcontext __user *sc, void __user *fpstate, | |||
184 | err |= __put_user(regs->r13, &sc->r13); | 192 | err |= __put_user(regs->r13, &sc->r13); |
185 | err |= __put_user(regs->r14, &sc->r14); | 193 | err |= __put_user(regs->r14, &sc->r14); |
186 | err |= __put_user(regs->r15, &sc->r15); | 194 | err |= __put_user(regs->r15, &sc->r15); |
195 | #endif /* CONFIG_X86_64 */ | ||
196 | |||
187 | err |= __put_user(current->thread.trap_no, &sc->trapno); | 197 | err |= __put_user(current->thread.trap_no, &sc->trapno); |
188 | err |= __put_user(current->thread.error_code, &sc->err); | 198 | err |= __put_user(current->thread.error_code, &sc->err); |
189 | err |= __put_user(regs->ip, &sc->ip); | 199 | err |= __put_user(regs->ip, &sc->ip); |
200 | #ifdef CONFIG_X86_32 | ||
201 | err |= __put_user(regs->cs, (unsigned int __user *)&sc->cs); | ||
190 | err |= __put_user(regs->flags, &sc->flags); | 202 | err |= __put_user(regs->flags, &sc->flags); |
203 | err |= __put_user(regs->sp, &sc->sp_at_signal); | ||
204 | err |= __put_user(regs->ss, (unsigned int __user *)&sc->ss); | ||
205 | #else /* !CONFIG_X86_32 */ | ||
206 | err |= __put_user(regs->flags, &sc->flags); | ||
207 | err |= __put_user(regs->cs, &sc->cs); | ||
208 | err |= __put_user(0, &sc->gs); | ||
209 | err |= __put_user(0, &sc->fs); | ||
210 | #endif /* CONFIG_X86_32 */ | ||
211 | |||
191 | err |= __put_user(fpstate, &sc->fpstate); | 212 | err |= __put_user(fpstate, &sc->fpstate); |
213 | |||
214 | /* non-iBCS2 extensions.. */ | ||
192 | err |= __put_user(mask, &sc->oldmask); | 215 | err |= __put_user(mask, &sc->oldmask); |
193 | err |= __put_user(current->thread.cr2, &sc->cr2); | 216 | err |= __put_user(current->thread.cr2, &sc->cr2); |
194 | 217 | ||