Commit 32e8bd64 authored by Harald Freudenberger's avatar Harald Freudenberger Committed by Heiko Carstens

s390/cpacf: Make use of invalid opcode produce a link error

Instead of calling BUG() at runtime introduce and use a prototype for a
non-existing function to produce a link error during compile when a not
supported opcode is used with the __cpacf_query() or __cpacf_check_opcode()
inline functions.
Suggested-by: default avatarHeiko Carstens <hca@linux.ibm.com>
Signed-off-by: default avatarHarald Freudenberger <freude@linux.ibm.com>
Reviewed-by: default avatarHolger Dengler <dengler@linux.ibm.com>
Reviewed-by: default avatarJuergen Christ <jchrist@linux.ibm.com>
Cc: stable@vger.kernel.org
Signed-off-by: default avatarHeiko Carstens <hca@linux.ibm.com>
parent 830999bd
...@@ -166,6 +166,13 @@ ...@@ -166,6 +166,13 @@
typedef struct { unsigned char bytes[16]; } cpacf_mask_t; typedef struct { unsigned char bytes[16]; } cpacf_mask_t;
/*
* Prototype for a not existing function to produce a link
* error if __cpacf_query() or __cpacf_check_opcode() is used
* with an invalid compile time const opcode.
*/
void __cpacf_bad_opcode(void);
static __always_inline void __cpacf_query_rre(u32 opc, u8 r1, u8 r2, static __always_inline void __cpacf_query_rre(u32 opc, u8 r1, u8 r2,
cpacf_mask_t *mask) cpacf_mask_t *mask)
{ {
...@@ -237,7 +244,7 @@ static __always_inline void __cpacf_query(unsigned int opcode, ...@@ -237,7 +244,7 @@ static __always_inline void __cpacf_query(unsigned int opcode,
__cpacf_query_rre(CPACF_PRNO, 2, 4, mask); __cpacf_query_rre(CPACF_PRNO, 2, 4, mask);
break; break;
default: default:
BUG(); __cpacf_bad_opcode();
} }
} }
...@@ -262,7 +269,8 @@ static __always_inline int __cpacf_check_opcode(unsigned int opcode) ...@@ -262,7 +269,8 @@ static __always_inline int __cpacf_check_opcode(unsigned int opcode)
case CPACF_KMA: case CPACF_KMA:
return test_facility(146); /* check for MSA8 */ return test_facility(146); /* check for MSA8 */
default: default:
BUG(); __cpacf_bad_opcode();
return 0;
} }
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment