From 7b4dc622c695213fa0ee5f8d0b74502412478375 Mon Sep 17 00:00:00 2001 From: "H. Peter Anvin" Date: Thu, 28 Aug 2008 17:35:25 -0700 Subject: [PATCH] BR 2039212: Handle indirect far jumps in 64-bit mode Handle indirect far jumps in 64-bit mode. Default to 64 bit unless overridden, for consistency with other jumps. --- insns.dat | 8 ++++++-- test/far64.asm | 10 ++++++++++ 2 files changed, 16 insertions(+), 2 deletions(-) create mode 100644 test/far64.asm diff --git a/insns.dat b/insns.dat index b68bf0aa..ee7f255e 100644 --- a/insns.dat +++ b/insns.dat @@ -210,9 +210,11 @@ CALL imm16:imm \320\1\x9A\31\30 8086,NOLONG CALL imm:imm16 \320\1\x9A\31\30 8086,NOLONG CALL imm32:imm \321\1\x9A\41\30 386,NOLONG CALL imm:imm32 \321\1\x9A\41\30 386,NOLONG -CALL mem|far \322\1\xFF\203 8086 +CALL mem|far \322\1\xFF\203 8086,NOLONG +CALL mem|far \324\1\xFF\203 X64 CALL mem16|far \320\1\xFF\203 8086 CALL mem32|far \321\1\xFF\203 386 +CALL mem64|far \324\1\xFF\203 X64 CALL mem|near \322\1\xFF\202 8086 CALL mem16|near \320\1\xFF\202 8086 CALL mem32|near \321\1\xFF\202 386,NOLONG @@ -632,9 +634,11 @@ JMP imm16:imm \320\1\xEA\31\30 8086,NOLONG JMP imm:imm16 \320\1\xEA\31\30 8086,NOLONG JMP imm32:imm \321\1\xEA\41\30 386,NOLONG JMP imm:imm32 \321\1\xEA\41\30 386,NOLONG -JMP mem|far \322\1\xFF\205 8086 +JMP mem|far \322\1\xFF\205 8086,NOLONG +JMP mem|far \324\1\xFF\205 X64 JMP mem16|far \320\1\xFF\205 8086 JMP mem32|far \321\1\xFF\205 386 +JMP mem64|far \324\1\xFF\205 X64 JMP mem|near \322\1\xFF\204 8086 JMP mem16|near \320\1\xFF\204 8086 JMP mem32|near \321\1\xFF\204 386,NOLONG diff --git a/test/far64.asm b/test/far64.asm new file mode 100644 index 00000000..b7a5108e --- /dev/null +++ b/test/far64.asm @@ -0,0 +1,10 @@ +;Testname=test; Arguments=-fbin -ofar64.bin; Files=.stdout .stderr far64.bin +; BR 2039212 + bits 64 + + call qword far [rax] + jmp qword far [rax] + call dword far [rax] + jmp dword far [rax] + call far [rax] + jmp far [rax] -- 2.11.4.GIT