INLINE UINT16 read_word_unaligned(UINT32 address) { if (address & 1) return program_read_byte_32le(address) | program_read_byte_32le(address+1)<<8; else return program_read_word_32le(address); }
INLINE UINT16 RWORD(offs_t addr) { UINT16 data; if (addr & 1) fprintf(stderr, "Unaligned word read @ %06X, PC=%06X\n", addr, dsp32.PC); data = program_read_word_32le(addr); return data; }
INLINE UINT16 READWORD(offs_t address) { /* aligned reads are easy */ if (!(address & 1)) return program_read_word_32le(address); /* misaligned reads are tricky */ return program_read_dword_32le(address & ~3) >> (address & 3); }
INLINE UINT16 arm7_cpu_read16( int addr ) { if(addr&3) { int val = addr & 3; if(val != 2) LOG(("%08x: MISALIGNED half word read @ %08x:\n",R15,addr)); } /*Handle through normal 32 bit handler ( for 32 bit cpu ) */ return program_read_word_32le(addr); }