|
@@ -64,6 +64,7 @@
|
|
|
* to keep gcc from statically optimizing it out, as variable_test_bit makes
|
|
|
* some versions of gcc to think only *(unsigned long*) is used.
|
|
|
*/
|
|
|
+#if defined(CONFIG_X86_32) || defined(CONFIG_IA32_EMULATION)
|
|
|
static volatile u32 good_insns_32[256 / 32] = {
|
|
|
/* 0 1 2 3 4 5 6 7 8 9 a b c d e f */
|
|
|
/* ---------------------------------------------- */
|
|
@@ -86,32 +87,12 @@ static volatile u32 good_insns_32[256 / 32] = {
|
|
|
/* ---------------------------------------------- */
|
|
|
/* 0 1 2 3 4 5 6 7 8 9 a b c d e f */
|
|
|
};
|
|
|
-
|
|
|
-/* Using this for both 64-bit and 32-bit apps */
|
|
|
-static volatile u32 good_2byte_insns[256 / 32] = {
|
|
|
- /* 0 1 2 3 4 5 6 7 8 9 a b c d e f */
|
|
|
- /* ---------------------------------------------- */
|
|
|
- W(0x00, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1) | /* 00 */
|
|
|
- W(0x10, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1) , /* 10 */
|
|
|
- W(0x20, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1) | /* 20 */
|
|
|
- W(0x30, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0) , /* 30 */
|
|
|
- W(0x40, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1) | /* 40 */
|
|
|
- W(0x50, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1) , /* 50 */
|
|
|
- W(0x60, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1) | /* 60 */
|
|
|
- W(0x70, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1) , /* 70 */
|
|
|
- W(0x80, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1) | /* 80 */
|
|
|
- W(0x90, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1) , /* 90 */
|
|
|
- W(0xa0, 1, 1, 1, 1, 1, 1, 0, 0, 1, 1, 1, 1, 1, 1, 0, 1) | /* a0 */
|
|
|
- W(0xb0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1) , /* b0 */
|
|
|
- W(0xc0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1) | /* c0 */
|
|
|
- W(0xd0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1) , /* d0 */
|
|
|
- W(0xe0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1) | /* e0 */
|
|
|
- W(0xf0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0) /* f0 */
|
|
|
- /* ---------------------------------------------- */
|
|
|
- /* 0 1 2 3 4 5 6 7 8 9 a b c d e f */
|
|
|
-};
|
|
|
+#else
|
|
|
+#define good_insns_32 NULL
|
|
|
+#endif
|
|
|
|
|
|
/* Good-instruction tables for 64-bit apps */
|
|
|
+#if defined(CONFIG_X86_64)
|
|
|
static volatile u32 good_insns_64[256 / 32] = {
|
|
|
/* 0 1 2 3 4 5 6 7 8 9 a b c d e f */
|
|
|
/* ---------------------------------------------- */
|
|
@@ -134,6 +115,33 @@ static volatile u32 good_insns_64[256 / 32] = {
|
|
|
/* ---------------------------------------------- */
|
|
|
/* 0 1 2 3 4 5 6 7 8 9 a b c d e f */
|
|
|
};
|
|
|
+#else
|
|
|
+#define good_insns_64 NULL
|
|
|
+#endif
|
|
|
+
|
|
|
+/* Using this for both 64-bit and 32-bit apps */
|
|
|
+static volatile u32 good_2byte_insns[256 / 32] = {
|
|
|
+ /* 0 1 2 3 4 5 6 7 8 9 a b c d e f */
|
|
|
+ /* ---------------------------------------------- */
|
|
|
+ W(0x00, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1) | /* 00 */
|
|
|
+ W(0x10, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1) , /* 10 */
|
|
|
+ W(0x20, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1) | /* 20 */
|
|
|
+ W(0x30, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0) , /* 30 */
|
|
|
+ W(0x40, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1) | /* 40 */
|
|
|
+ W(0x50, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1) , /* 50 */
|
|
|
+ W(0x60, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1) | /* 60 */
|
|
|
+ W(0x70, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1) , /* 70 */
|
|
|
+ W(0x80, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1) | /* 80 */
|
|
|
+ W(0x90, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1) , /* 90 */
|
|
|
+ W(0xa0, 1, 1, 1, 1, 1, 1, 0, 0, 1, 1, 1, 1, 1, 1, 0, 1) | /* a0 */
|
|
|
+ W(0xb0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1) , /* b0 */
|
|
|
+ W(0xc0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1) | /* c0 */
|
|
|
+ W(0xd0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1) , /* d0 */
|
|
|
+ W(0xe0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1) | /* e0 */
|
|
|
+ W(0xf0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0) /* f0 */
|
|
|
+ /* ---------------------------------------------- */
|
|
|
+ /* 0 1 2 3 4 5 6 7 8 9 a b c d e f */
|
|
|
+};
|
|
|
#undef W
|
|
|
|
|
|
/*
|