mirror of
https://github.com/oasislinux/oasis.git
synced 2026-09-28 10:10:01 +02:00
62 lines
2.3 KiB
Diff
62 lines
2.3 KiB
Diff
From 7ef6b16d688b3a7911e1cb41384630bb188635f8 Mon Sep 17 00:00:00 2001
|
|
From: Michael Forney <mforney@mforney.org>
|
|
Date: Sat, 25 Apr 2026 17:24:26 -0700
|
|
Subject: [PATCH] x86: expand non-standard a...b case labels
|
|
|
|
---
|
|
gas/config/tc-i386-ginsn.c | 17 ++++++++++++-----
|
|
1 file changed, 12 insertions(+), 5 deletions(-)
|
|
|
|
diff --git a/gas/config/tc-i386-ginsn.c b/gas/config/tc-i386-ginsn.c
|
|
index 89bd6f3a0da..951683dfdd0 100644
|
|
--- a/gas/config/tc-i386-ginsn.c
|
|
+++ b/gas/config/tc-i386-ginsn.c
|
|
@@ -833,7 +833,8 @@ x86_ginsn_new (const symbolS *insn_end_sym, enum ginsn_gen_mode gmode)
|
|
gas_assert (!ginsn_link_next (ginsn, ginsn_next));
|
|
break;
|
|
|
|
- case 0x50 ... 0x57:
|
|
+ case 0x50: case 0x51: case 0x52: case 0x53:
|
|
+ case 0x54: case 0x55: case 0x56: case 0x57:
|
|
if (i.tm.opcode_space != SPACE_BASE)
|
|
break;
|
|
/* push reg. */
|
|
@@ -853,7 +854,8 @@ x86_ginsn_new (const symbolS *insn_end_sym, enum ginsn_gen_mode gmode)
|
|
gas_assert (!ginsn_link_next (ginsn, ginsn_next));
|
|
break;
|
|
|
|
- case 0x58 ... 0x5f:
|
|
+ case 0x58: case 0x59: case 0x5a: case 0x5b:
|
|
+ case 0x5c: case 0x5d: case 0x5e: case 0x5f:
|
|
if (i.tm.opcode_space != SPACE_BASE)
|
|
break;
|
|
/* pop reg. */
|
|
@@ -897,7 +899,10 @@ x86_ginsn_new (const symbolS *insn_end_sym, enum ginsn_gen_mode gmode)
|
|
/* PS: Opcodes 0x80 ... 0x8f with opcode_space SPACE_0F are present
|
|
only after relaxation. They do not need to be handled for ginsn
|
|
creation. */
|
|
- case 0x70 ... 0x7f:
|
|
+ case 0x70: case 0x71: case 0x72: case 0x73:
|
|
+ case 0x74: case 0x75: case 0x76: case 0x77:
|
|
+ case 0x78: case 0x79: case 0x7a: case 0x7b:
|
|
+ case 0x7c: case 0x7d: case 0x7e: case 0x7f:
|
|
if (i.tm.opcode_space != SPACE_BASE)
|
|
break;
|
|
ginsn = x86_ginsn_jump (insn_end_sym, true);
|
|
@@ -1061,8 +1066,10 @@ x86_ginsn_new (const symbolS *insn_end_sym, enum ginsn_gen_mode gmode)
|
|
ginsn = x86_ginsn_leave (insn_end_sym);
|
|
break;
|
|
|
|
- case 0xe0 ... 0xe2: /* loop / loope / loopne. */
|
|
- case 0xe3: /* jecxz / jrcxz. */
|
|
+ case 0xe0: /* loop. */
|
|
+ case 0xe1: /* loope. */
|
|
+ case 0xe2: /* loopne. */
|
|
+ case 0xe3: /* jecxz / jrcxz. */
|
|
if (i.tm.opcode_space != SPACE_BASE)
|
|
break;
|
|
ginsn = x86_ginsn_jump (insn_end_sym, true);
|
|
--
|
|
2.49.0
|
|
|