|
@@ -1091,12 +1091,6 @@ static int s390_tdb_set(struct task_struct *target,
|
|
|
return 0;
|
|
|
}
|
|
|
|
|
|
-static int s390_vxrs_active(struct task_struct *target,
|
|
|
- const struct user_regset *regset)
|
|
|
-{
|
|
|
- return !!target->thread.vxrs;
|
|
|
-}
|
|
|
-
|
|
|
static int s390_vxrs_low_get(struct task_struct *target,
|
|
|
const struct user_regset *regset,
|
|
|
unsigned int pos, unsigned int count,
|
|
@@ -1105,6 +1099,8 @@ static int s390_vxrs_low_get(struct task_struct *target,
|
|
|
__u64 vxrs[__NUM_VXRS_LOW];
|
|
|
int i;
|
|
|
|
|
|
+ if (!MACHINE_HAS_VX)
|
|
|
+ return -ENODEV;
|
|
|
if (target->thread.vxrs) {
|
|
|
if (target == current)
|
|
|
save_vx_regs(target->thread.vxrs);
|
|
@@ -1123,6 +1119,8 @@ static int s390_vxrs_low_set(struct task_struct *target,
|
|
|
__u64 vxrs[__NUM_VXRS_LOW];
|
|
|
int i, rc;
|
|
|
|
|
|
+ if (!MACHINE_HAS_VX)
|
|
|
+ return -ENODEV;
|
|
|
if (!target->thread.vxrs) {
|
|
|
rc = alloc_vector_registers(target);
|
|
|
if (rc)
|
|
@@ -1148,6 +1146,8 @@ static int s390_vxrs_high_get(struct task_struct *target,
|
|
|
{
|
|
|
__vector128 vxrs[__NUM_VXRS_HIGH];
|
|
|
|
|
|
+ if (!MACHINE_HAS_VX)
|
|
|
+ return -ENODEV;
|
|
|
if (target->thread.vxrs) {
|
|
|
if (target == current)
|
|
|
save_vx_regs(target->thread.vxrs);
|
|
@@ -1165,6 +1165,8 @@ static int s390_vxrs_high_set(struct task_struct *target,
|
|
|
{
|
|
|
int rc;
|
|
|
|
|
|
+ if (!MACHINE_HAS_VX)
|
|
|
+ return -ENODEV;
|
|
|
if (!target->thread.vxrs) {
|
|
|
rc = alloc_vector_registers(target);
|
|
|
if (rc)
|
|
@@ -1249,7 +1251,6 @@ static const struct user_regset s390_regsets[] = {
|
|
|
.n = __NUM_VXRS_LOW,
|
|
|
.size = sizeof(__u64),
|
|
|
.align = sizeof(__u64),
|
|
|
- .active = s390_vxrs_active,
|
|
|
.get = s390_vxrs_low_get,
|
|
|
.set = s390_vxrs_low_set,
|
|
|
},
|
|
@@ -1258,7 +1259,6 @@ static const struct user_regset s390_regsets[] = {
|
|
|
.n = __NUM_VXRS_HIGH,
|
|
|
.size = sizeof(__vector128),
|
|
|
.align = sizeof(__vector128),
|
|
|
- .active = s390_vxrs_active,
|
|
|
.get = s390_vxrs_high_get,
|
|
|
.set = s390_vxrs_high_set,
|
|
|
},
|
|
@@ -1472,7 +1472,6 @@ static const struct user_regset s390_compat_regsets[] = {
|
|
|
.n = __NUM_VXRS_LOW,
|
|
|
.size = sizeof(__u64),
|
|
|
.align = sizeof(__u64),
|
|
|
- .active = s390_vxrs_active,
|
|
|
.get = s390_vxrs_low_get,
|
|
|
.set = s390_vxrs_low_set,
|
|
|
},
|
|
@@ -1481,7 +1480,6 @@ static const struct user_regset s390_compat_regsets[] = {
|
|
|
.n = __NUM_VXRS_HIGH,
|
|
|
.size = sizeof(__vector128),
|
|
|
.align = sizeof(__vector128),
|
|
|
- .active = s390_vxrs_active,
|
|
|
.get = s390_vxrs_high_get,
|
|
|
.set = s390_vxrs_high_set,
|
|
|
},
|