diff options
Diffstat (limited to 'src/arch/x86/isa/insts/data_transfer')
-rw-r--r-- | src/arch/x86/isa/insts/data_transfer/move.py | 42 | ||||
-rw-r--r-- | src/arch/x86/isa/insts/data_transfer/stack_operations.py | 14 |
2 files changed, 25 insertions, 31 deletions
diff --git a/src/arch/x86/isa/insts/data_transfer/move.py b/src/arch/x86/isa/insts/data_transfer/move.py index 662b2c373..c85dd7cc4 100644 --- a/src/arch/x86/isa/insts/data_transfer/move.py +++ b/src/arch/x86/isa/insts/data_transfer/move.py @@ -55,59 +55,55 @@ microcode = ''' def macroop MOV_R_R { - mov "env.reg", "env.reg", "env.regm" + mov reg, reg, regm }; def macroop MOV_M_R { - st "env.reg", 3, ["env.scale", "env.index", "env.base"], "DISPLACEMENT" + st reg, ds, [scale, index, base], disp }; def macroop MOV_P_R { - rdip "NUM_INTREGS+7" - st "env.reg", 3, ["env.scale", "env.index", "env.base"], "DISPLACEMENT" + rdip t7 + st reg, ds, [scale, index, base], disp }; def macroop MOV_R_M { - ld "env.reg", 3, ["env.scale", "env.index", "env.base"], "DISPLACEMENT" + ld reg, ds, [scale, index, base], disp }; def macroop MOV_R_P { - rdip "NUM_INTREGS+7" - ld "env.reg", 3, ["env.scale", "env.index", "env.base"], "DISPLACEMENT" + rdip t7 + ld reg, ds, [scale, index, base], disp }; def macroop MOV_R_I { - limm "env.reg", "IMMEDIATE" + limm reg, imm }; def macroop MOV_M_I { - limm "NUM_INTREGS+1", "IMMEDIATE" - st "NUM_INTREGS+1", 3, ["env.scale", "env.index", "env.base"], \ - "DISPLACEMENT" + limm t1, imm + st t1, ds, [scale, index, base], disp }; def macroop MOV_P_I { - rdip "NUM_INTREGS+7" - limm "NUM_INTREGS+1", "IMMEDIATE" - st "NUM_INTREGS+1", 3, ["env.scale", "env.index", "env.base"], \ - "DISPLACEMENT" + rdip t7 + limm t1, imm + st t1, ds, [scale, index, base], disp }; def macroop MOVSXD_R_R { - sext "env.reg", "env.regm", "env.dataSize" + sext reg, regm, dsz }; def macroop MOVSXD_R_M { - ld "NUM_INTREGS+1", 3, ["env.scale", "env.index", "env.base"], \ - "DISPLACEMENT" - sext "env.reg", "NUM_INTREGS+1", "env.dataSize" + ld t1, ds, [scale, index, base], disp + sext reg, t1, dsz }; def macroop MOVSXD_R_P { - rdip "NUM_INTREGS+7" - ld "NUM_INTREGS+1", 3, ["env.scale", "env.index", "env.base"], \ - "DISPLACEMENT" - sext "env.reg", "NUM_INTREGS+1", "env.dataSize" + rdip t7 + ld t1, ds, [scale, index, base], disp + sext reg, t1, dsz }; ''' #let {{ diff --git a/src/arch/x86/isa/insts/data_transfer/stack_operations.py b/src/arch/x86/isa/insts/data_transfer/stack_operations.py index ad95fd468..ca2443752 100644 --- a/src/arch/x86/isa/insts/data_transfer/stack_operations.py +++ b/src/arch/x86/isa/insts/data_transfer/stack_operations.py @@ -55,21 +55,19 @@ microcode = ''' def macroop POP_R { - # Make the default data size of pops 64 bits in 64 bit mode - .adjust_env "if(machInst.mode.submode == SixtyFourBitMode && env.dataSize == 4) env.dataSize = 8\;" + .adjust_env oszIn64Override - ld "env.reg", 2, [0, "NUM_INTREGS", "INTREG_RSP"] - addi "INTREG_RSP", "INTREG_RSP", "env.dataSize" + ld reg, ss, [0, t0, "INTREG_RSP"] + addi "INTREG_RSP", "INTREG_RSP", dsz }; def macroop PUSH_R { - # Make the default data size of pops 64 bits in 64 bit mode - .adjust_env "if(machInst.mode.submode == SixtyFourBitMode && env.dataSize == 4) env.dataSize = 8\;" + .adjust_env oszIn64Override - subi "INTREG_RSP", "INTREG_RSP", "env.dataSize" - st "env.reg", 2, [0, "NUM_INTREGS", "INTREG_RSP"] + subi "INTREG_RSP", "INTREG_RSP", dsz + st reg, ss, [0, t0, "INTREG_RSP"] }; ''' #let {{ |