5 * This work is licensed under the terms of MAME license.
6 * See COPYING file in the top-level directory.
9 .equ M68K_MEM_SHIFT, 16
11 .global cyclone_checkpc
12 .global cyclone_fetch8
13 .global cyclone_fetch16
14 .global cyclone_fetch32
16 .global cyclone_read16
17 .global cyclone_read32
18 .global cyclone_write8
19 .global cyclone_write16
20 .global cyclone_write32
22 @ Warning: here we abuse the fact that we are only called
23 @ from Cyclone, and assume that r7 contains context pointer.
25 ldr r1, [r7, #0x60] @ membase
27 and r3, r0, #0xff000000
29 bics r2, r0, #0xff000000
32 ldr r1, [r7, #0x6c] @ read16 map
33 mov r2, r2, lsr #M68K_MEM_SHIFT
34 ldr r1, [r1, r2, lsl #2]
39 str r1, [r7, #0x60] @ membase
47 ldr r0, [r7, #0x40] @ reload PC + membase
51 cyclone_read8: @ u32 a
53 bic r0, r0, #0xff000000
54 ldr r1, [r7, #0x68] @ read8 map
55 mov r2, r0, lsr #M68K_MEM_SHIFT
56 ldr r1, [r1, r2, lsl #2]
64 cyclone_read16: @ u32 a
66 bic r0, r0, #0xff000000
67 ldr r1, [r7, #0x6c] @ read16 map
68 mov r2, r0, lsr #M68K_MEM_SHIFT
69 ldr r1, [r1, r2, lsl #2]
77 cyclone_read32: @ u32 a
79 bic r0, r0, #0xff000000
80 ldr r1, [r7, #0x6c] @ read16 map
81 mov r2, r0, lsr #M68K_MEM_SHIFT
82 ldr r1, [r1, r2, lsl #2]
87 orrcc r0, r1, r0, lsl #16
101 orr r0, r1, r0, lsr #16
105 cyclone_write8: @ u32 a, u8 d
106 bic r0, r0, #0xff000000
107 ldr r2, [r7, #0x74] @ write8 map
108 mov r3, r0, lsr #M68K_MEM_SHIFT
109 ldr r2, [r2, r3, lsl #2]
117 cyclone_write16: @ u32 a, u16 d
118 bic r0, r0, #0xff000000
119 ldr r2, [r7, #0x78] @ write16 map
120 mov r3, r0, lsr #M68K_MEM_SHIFT
121 ldr r2, [r2, r3, lsl #2]
129 cyclone_write32: @ u32 a, u32 d
130 bic r0, r0, #0xff000000
131 ldr r2, [r7, #0x78] @ write16 map
132 mov r3, r0, lsr #M68K_MEM_SHIFT
133 ldr r2, [r2, r3, lsl #2]
136 movcc r3, r1, lsr #16
149 @ vim:filetype=armasm