diff --git a/emu/gadgets-x86/bits.S b/emu/gadgets-x86/bits.S index 04e047f7..2062c465 100644 --- a/emu/gadgets-x86/bits.S +++ b/emu/gadgets-x86/bits.S @@ -76,3 +76,12 @@ .each_reg x .purgem x .gadget_array bt + +.macro x name reg + .gadget bswap_\name + bswap %\reg + gret +.endm +.each_reg x +.purgem x +.gadget_list bswap, REG_LIST diff --git a/emu/gen.c b/emu/gen.c index 6624dd88..5fd848ed 100644 --- a/emu/gen.c +++ b/emu/gen.c @@ -286,7 +286,7 @@ static inline bool gen_op(struct gen_state *state, gadget_t *gadgets, enum arg a #define BSF(src, dst,z) los(bsf, src, dst, z) #define BSR(src, dst,z) los(bsr, src, dst, z) -#define BSWAP(dst) UNDEFINED +#define BSWAP(dst) ga(bswap, arg_##dst) #define strop(op, rep, z) gag(op, sz(z) * size_count + rep_##rep, saved_ip) #define STR(op, z) strop(op, once, z)