|
|
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.