summaryrefslogtreecommitdiff
path: root/src/arch/x86
diff options
context:
space:
mode:
authorGabe Black <gblack@eecs.umich.edu>2007-10-18 22:42:17 -0700
committerGabe Black <gblack@eecs.umich.edu>2007-10-18 22:42:17 -0700
commitf0dce3bfce72a1a8514aa22e04ea6e06253a985f (patch)
treec0c339a93101e50a2facf729326638c22e255180 /src/arch/x86
parent46bd1c99a9fb3099ab9688ce43669cb7bc154a2a (diff)
downloadgem5-f0dce3bfce72a1a8514aa22e04ea6e06253a985f.tar.xz
X86: Implement the undocumented SALC instruction which sets AL to 0xFF if CF=1 and 0x00 otherwise.
--HG-- extra : convert_revision : 845d43c544e296d7595f54054906055a9f21ad9f
Diffstat (limited to 'src/arch/x86')
-rw-r--r--src/arch/x86/isa/decoder/one_byte_opcodes.isa2
-rw-r--r--src/arch/x86/isa/insts/general_purpose/compare_and_test/set_byte_on_condition.py5
2 files changed, 6 insertions, 1 deletions
diff --git a/src/arch/x86/isa/decoder/one_byte_opcodes.isa b/src/arch/x86/isa/decoder/one_byte_opcodes.isa
index 483e750b2..473dd1eeb 100644
--- a/src/arch/x86/isa/decoder/one_byte_opcodes.isa
+++ b/src/arch/x86/isa/decoder/one_byte_opcodes.isa
@@ -461,7 +461,7 @@
}
0x6: decode MODE_SUBMODE {
0x0: UD2();
- default: WarnUnimpl::salc();
+ default: SALC(rAb);
}
0x7: XLAT();
}
diff --git a/src/arch/x86/isa/insts/general_purpose/compare_and_test/set_byte_on_condition.py b/src/arch/x86/isa/insts/general_purpose/compare_and_test/set_byte_on_condition.py
index 81091905c..fab42dffd 100644
--- a/src/arch/x86/isa/insts/general_purpose/compare_and_test/set_byte_on_condition.py
+++ b/src/arch/x86/isa/insts/general_purpose/compare_and_test/set_byte_on_condition.py
@@ -54,6 +54,11 @@
# Authors: Gabe Black
microcode = '''
+def macroop SALC_R
+{
+ sbb reg, reg, reg, dataSize=1
+};
+
def macroop SETZ_R
{
movi reg, reg, 1, flags=(CZF,)