From: Christian Thalinger Date: Fri, 7 Sep 2007 18:41:11 +0000 (+0200) Subject: * src/vm/jit/x86_64/codegen.h (M_BYTE1, M_BYTE2): New macros. X-Git-Url: http://wien.tomnetworks.com/gitweb/?a=commitdiff_plain;h=32555c7c202e053a2647ea02097c7ef5942e5ce8;p=cacao.git * src/vm/jit/x86_64/codegen.h (M_BYTE1, M_BYTE2): New macros. (M_UD2): Added. (M_RET, M_NOP): Use M_BYTE1. * src/vm/jit/x86_64/emit.c (emit_ret): Removed. (emit_nop): Likewise. * src/vm/jit/x86_64/emit.h: Likewise. --- diff --git a/src/vm/jit/x86_64/codegen.h b/src/vm/jit/x86_64/codegen.h index e6b1a3786..4eb7e8b8e 100644 --- a/src/vm/jit/x86_64/codegen.h +++ b/src/vm/jit/x86_64/codegen.h @@ -141,6 +141,20 @@ /* macros to create code ******************************************************/ +#define M_BYTE1(a) \ + do { \ + *(cd->mcodeptr) = (a); \ + cd->mcodeptr++; \ + } while (0) + + +#define M_BYTE2(a, b) \ + do { \ + M_BYTE1(a); \ + M_BYTE1(b); \ + } while (0) + + #define M_MOV(a,b) emit_mov_reg_reg(cd, (a), (b)) #define M_MOV_IMM(a,b) emit_mov_imm_reg(cd, (u8) (a), (b)) @@ -296,9 +310,10 @@ #define M_JMP_IMM(a) emit_jmp_imm(cd, (a)) #define M_CALL(a) emit_call_reg(cd, (a)) #define M_CALL_IMM(a) emit_call_imm(cd, (a)) -#define M_RET emit_ret(cd) +#define M_RET M_BYTE1(0xc3) -#define M_NOP emit_nop(cd) +#define M_NOP M_BYTE1(0x90) +#define M_UD2 M_BYTE2(0x0f, 0x0b) #define M_CLR(a) M_LXOR(a,a) diff --git a/src/vm/jit/x86_64/emit.c b/src/vm/jit/x86_64/emit.c index 5566894e1..fd7df3364 100644 --- a/src/vm/jit/x86_64/emit.c +++ b/src/vm/jit/x86_64/emit.c @@ -1628,12 +1628,6 @@ void emit_idivl_reg(codegendata *cd, s8 reg) { -void emit_ret(codegendata *cd) { - *(cd->mcodeptr++) = 0xc3; -} - - - /* * shift ops */ @@ -1829,11 +1823,6 @@ void emit_xchg_reg_reg(codegendata *cd, s8 reg, s8 dreg) { } -void emit_nop(codegendata *cd) { - *(cd->mcodeptr++) = 0x90; -} - - /* * call instructions diff --git a/src/vm/jit/x86_64/emit.h b/src/vm/jit/x86_64/emit.h index 35c2c559d..24239e431 100644 --- a/src/vm/jit/x86_64/emit.h +++ b/src/vm/jit/x86_64/emit.h @@ -266,7 +266,6 @@ void emit_imul_imm_membase_reg(codegendata *cd, s8 imm, s8 basereg, s8 disp, s8 void emit_imull_imm_membase_reg(codegendata *cd, s8 imm, s8 basereg, s8 disp, s8 dreg); void emit_idiv_reg(codegendata *cd, s8 reg); void emit_idivl_reg(codegendata *cd, s8 reg); -void emit_ret(codegendata *cd); void emit_shift_reg(codegendata *cd, s8 opc, s8 reg); void emit_shiftl_reg(codegendata *cd, s8 opc, s8 reg); void emit_shift_membase(codegendata *cd, s8 opc, s8 basereg, s8 disp); @@ -293,7 +292,6 @@ void emit_push_reg(codegendata *cd, s8 reg); void emit_push_imm(codegendata *cd, s8 imm); void emit_pop_reg(codegendata *cd, s8 reg); void emit_xchg_reg_reg(codegendata *cd, s8 reg, s8 dreg); -void emit_nop(codegendata *cd); void emit_call_reg(codegendata *cd, s8 reg); void emit_call_imm(codegendata *cd, s8 imm); void emit_call_mem(codegendata *cd, ptrint mem);