diff options
author | bellard <bellard@c046a42c-6fe2-441c-8c8c-71466251a162> | 2003-08-10 21:47:01 +0000 |
---|---|---|
committer | bellard <bellard@c046a42c-6fe2-441c-8c8c-71466251a162> | 2003-08-10 21:47:01 +0000 |
commit | 33417e7025afa5ea1c38c3c2b2ea53d975b5648b (patch) | |
tree | 6c4ab68c228ac2eb8ec4a40559629fce57480b51 /op-i386.c | |
parent | 4021dab0594761c939b258cad67275c492b88e4d (diff) |
soft mmu support - Memory I/O API - synthetize string instructions
git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@354 c046a42c-6fe2-441c-8c8c-71466251a162
Diffstat (limited to 'op-i386.c')
-rw-r--r-- | op-i386.c | 100 |
1 files changed, 38 insertions, 62 deletions
@@ -376,70 +376,14 @@ void OPPROTO op_andl_A0_ffff(void) /* memory access */ -void OPPROTO op_ldub_T0_A0(void) -{ - T0 = ldub((uint8_t *)A0); -} - -void OPPROTO op_ldsb_T0_A0(void) -{ - T0 = ldsb((int8_t *)A0); -} - -void OPPROTO op_lduw_T0_A0(void) -{ - T0 = lduw((uint8_t *)A0); -} - -void OPPROTO op_ldsw_T0_A0(void) -{ - T0 = ldsw((int8_t *)A0); -} - -void OPPROTO op_ldl_T0_A0(void) -{ - T0 = ldl((uint8_t *)A0); -} +#define MEMSUFFIX +#include "ops_mem.h" -void OPPROTO op_ldub_T1_A0(void) -{ - T1 = ldub((uint8_t *)A0); -} - -void OPPROTO op_ldsb_T1_A0(void) -{ - T1 = ldsb((int8_t *)A0); -} - -void OPPROTO op_lduw_T1_A0(void) -{ - T1 = lduw((uint8_t *)A0); -} +#define MEMSUFFIX _user +#include "ops_mem.h" -void OPPROTO op_ldsw_T1_A0(void) -{ - T1 = ldsw((int8_t *)A0); -} - -void OPPROTO op_ldl_T1_A0(void) -{ - T1 = ldl((uint8_t *)A0); -} - -void OPPROTO op_stb_T0_A0(void) -{ - stb((uint8_t *)A0, T0); -} - -void OPPROTO op_stw_T0_A0(void) -{ - stw((uint8_t *)A0, T0); -} - -void OPPROTO op_stl_T0_A0(void) -{ - stl((uint8_t *)A0, T0); -} +#define MEMSUFFIX _kernel +#include "ops_mem.h" /* used for bit operations */ @@ -635,6 +579,38 @@ void OPPROTO op_movswl_DX_AX(void) EDX = (EDX & 0xffff0000) | (((int16_t)EAX >> 15) & 0xffff); } +/* string ops helpers */ + +void OPPROTO op_addl_ESI_T0(void) +{ + ESI += T0; +} + +void OPPROTO op_addw_ESI_T0(void) +{ + ESI = (ESI & ~0xffff) | ((ESI + T0) & 0xffff); +} + +void OPPROTO op_addl_EDI_T0(void) +{ + EDI += T0; +} + +void OPPROTO op_addw_EDI_T0(void) +{ + EDI = (EDI & ~0xffff) | ((EDI + T0) & 0xffff); +} + +void OPPROTO op_decl_ECX(void) +{ + ECX--; +} + +void OPPROTO op_decw_ECX(void) +{ + ECX = (ECX & ~0xffff) | ((ECX - 1) & 0xffff); +} + /* push/pop */ void op_pushl_T0(void) |