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 /arch/x86/kernel/signal_64.c | |
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>
Diffstat (limited to 'arch/x86/kernel/signal_64.c')
-rw-r--r-- | arch/x86/kernel/signal_64.c | 33 |
1 files changed, 28 insertions, 5 deletions
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 | ||