aboutsummaryrefslogtreecommitdiffstats
path: root/arch/um/os-Linux/skas/process.c
diff options
context:
space:
mode:
Diffstat (limited to 'arch/um/os-Linux/skas/process.c')
-rw-r--r--arch/um/os-Linux/skas/process.c15
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