|
29 | 29 | #include <asm/lowcore.h> |
30 | 30 | #include <asm/switch_to.h> |
31 | 31 | #include <asm/vdso.h> |
| 32 | +#include <asm/fpu/api.h> |
32 | 33 | #include "compat_linux.h" |
33 | 34 | #include "compat_ptrace.h" |
34 | 35 | #include "entry.h" |
@@ -133,7 +134,7 @@ static int save_sigregs_ext32(struct pt_regs *regs, |
133 | 134 | return -EFAULT; |
134 | 135 |
|
135 | 136 | /* Save vector registers to signal stack */ |
136 | | - if (MACHINE_HAS_VX) { |
| 137 | + if (cpu_has_vx()) { |
137 | 138 | for (i = 0; i < __NUM_VXRS_LOW; i++) |
138 | 139 | vxrs[i] = current->thread.fpu.vxrs[i].low; |
139 | 140 | if (__copy_to_user(&sregs_ext->vxrs_low, vxrs, |
@@ -161,7 +162,7 @@ static int restore_sigregs_ext32(struct pt_regs *regs, |
161 | 162 | *(__u32 *)®s->gprs[i] = gprs_high[i]; |
162 | 163 |
|
163 | 164 | /* Restore vector registers from signal stack */ |
164 | | - if (MACHINE_HAS_VX) { |
| 165 | + if (cpu_has_vx()) { |
165 | 166 | if (__copy_from_user(vxrs, &sregs_ext->vxrs_low, |
166 | 167 | sizeof(sregs_ext->vxrs_low)) || |
167 | 168 | __copy_from_user(current->thread.fpu.vxrs + __NUM_VXRS_LOW, |
@@ -261,7 +262,7 @@ static int setup_frame32(struct ksignal *ksig, sigset_t *set, |
261 | 262 | * the machine supports it |
262 | 263 | */ |
263 | 264 | frame_size = sizeof(*frame) - sizeof(frame->sregs_ext.__reserved); |
264 | | - if (!MACHINE_HAS_VX) |
| 265 | + if (!cpu_has_vx()) |
265 | 266 | frame_size -= sizeof(frame->sregs_ext.vxrs_low) + |
266 | 267 | sizeof(frame->sregs_ext.vxrs_high); |
267 | 268 | frame = get_sigframe(&ksig->ka, regs, frame_size); |
@@ -344,11 +345,12 @@ static int setup_rt_frame32(struct ksignal *ksig, sigset_t *set, |
344 | 345 | * the machine supports it |
345 | 346 | */ |
346 | 347 | uc_flags = UC_GPRS_HIGH; |
347 | | - if (MACHINE_HAS_VX) { |
| 348 | + if (cpu_has_vx()) { |
348 | 349 | uc_flags |= UC_VXRS; |
349 | | - } else |
| 350 | + } else { |
350 | 351 | frame_size -= sizeof(frame->uc.uc_mcontext_ext.vxrs_low) + |
351 | 352 | sizeof(frame->uc.uc_mcontext_ext.vxrs_high); |
| 353 | + } |
352 | 354 | frame = get_sigframe(&ksig->ka, regs, frame_size); |
353 | 355 | if (frame == (void __user *) -1UL) |
354 | 356 | return -EFAULT; |
|
0 commit comments