|
|
1.1 ! root 1: #include "registers.h" ! 2: ! 3: #define DATAREG(a) (reg68k_regs[a]) ! 4: #define ADDRREG(a) (reg68k_regs[8+(a)]) ! 5: #define PC (reg68k_pc) ! 6: #define SR (reg68k_sr.sr_int) ! 7: #define SP (regs.sp) ! 8: #define STOP (regs.stop) ! 9: #define TFLAG (reg68k_sr.sr_struct.t) ! 10: #define SFLAG (reg68k_sr.sr_struct.s) ! 11: #define XFLAG (reg68k_sr.sr_struct.x) ! 12: #define NFLAG (reg68k_sr.sr_struct.n) ! 13: #define ZFLAG (reg68k_sr.sr_struct.z) ! 14: #define VFLAG (reg68k_sr.sr_struct.v) ! 15: #define CFLAG (reg68k_sr.sr_struct.c) ! 16: ! 17: static __inline__ sint32 idxval_dst(t_ipc *ipc) { ! 18: switch( ((ipc->dst>>27) & 1) | ((ipc->dst>>30) & 2) ) { ! 19: case 0: /* data, word */ ! 20: return ((sint16)DATAREG((ipc->dst>>28)&7))+((((sint32)(ipc->dst<<8)))>>8); ! 21: case 1: /* data, long */ ! 22: return ((sint32)DATAREG((ipc->dst>>28)&7))+((((sint32)(ipc->dst<<8)))>>8); ! 23: case 2: /* addr, word */ ! 24: return ((sint16)ADDRREG((ipc->dst>>28)&7))+((((sint32)(ipc->dst<<8)))>>8); ! 25: case 3: /* addr, long */ ! 26: return ((sint32)ADDRREG((ipc->dst>>28)&7))+((((sint32)(ipc->dst<<8)))>>8); ! 27: } ! 28: return 0; ! 29: } ! 30: ! 31: static __inline__ sint32 idxval_src(t_ipc *ipc) { ! 32: switch( ((ipc->src>>27) & 1) | ((ipc->src>>30) & 2) ) { ! 33: case 0: /* data, word */ ! 34: return ((sint16)DATAREG((ipc->src>>28)&7))+((((sint32)(ipc->src<<8)))>>8); ! 35: case 1: /* data, long */ ! 36: return ((sint32)DATAREG((ipc->src>>28)&7))+((((sint32)(ipc->src<<8)))>>8); ! 37: case 2: /* addr, word */ ! 38: return ((sint16)ADDRREG((ipc->src>>28)&7))+((((sint32)(ipc->src<<8)))>>8); ! 39: case 3: /* addr, long */ ! 40: return ((sint32)ADDRREG((ipc->src>>28)&7))+((((sint32)(ipc->src<<8)))>>8); ! 41: } ! 42: return 0; ! 43: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.