diff options
Diffstat (limited to 'arch/um/os-Linux/skas/process.c')
-rw-r--r-- | arch/um/os-Linux/skas/process.c | 15 |
1 files changed, 15 insertions, 0 deletions
diff --git a/arch/um/os-Linux/skas/process.c b/arch/um/os-Linux/skas/process.c index b14829469fae..1e8cba6550a9 100644 --- a/arch/um/os-Linux/skas/process.c +++ b/arch/um/os-Linux/skas/process.c | |||
@@ -115,6 +115,14 @@ void get_skas_faultinfo(int pid, struct faultinfo * fi) | |||
115 | sizeof(struct ptrace_faultinfo)); | 115 | sizeof(struct ptrace_faultinfo)); |
116 | } | 116 | } |
117 | else { | 117 | else { |
118 | unsigned long fpregs[FP_SIZE]; | ||
119 | |||
120 | err = get_fp_registers(pid, fpregs); | ||
121 | if (err < 0) { | ||
122 | printk(UM_KERN_ERR "save_fp_registers returned %d\n", | ||
123 | err); | ||
124 | fatal_sigsegv(); | ||
125 | } | ||
118 | err = ptrace(PTRACE_CONT, pid, 0, SIGSEGV); | 126 | err = ptrace(PTRACE_CONT, pid, 0, SIGSEGV); |
119 | if (err) { | 127 | if (err) { |
120 | printk(UM_KERN_ERR "Failed to continue stub, pid = %d, " | 128 | printk(UM_KERN_ERR "Failed to continue stub, pid = %d, " |
@@ -128,6 +136,13 @@ void get_skas_faultinfo(int pid, struct faultinfo * fi) | |||
128 | * the stub stack page. We just have to copy it. | 136 | * the stub stack page. We just have to copy it. |
129 | */ | 137 | */ |
130 | memcpy(fi, (void *)current_stub_stack(), sizeof(*fi)); | 138 | memcpy(fi, (void *)current_stub_stack(), sizeof(*fi)); |
139 | |||
140 | err = put_fp_registers(pid, fpregs); | ||
141 | if (err < 0) { | ||
142 | printk(UM_KERN_ERR "put_fp_registers returned %d\n", | ||
143 | err); | ||
144 | fatal_sigsegv(); | ||
145 | } | ||
131 | } | 146 | } |
132 | } | 147 | } |
133 | 148 | ||