Mercurial > repos > blastem
comparison zruntime.S @ 509:b3738ee58195
Fix accidental use of the conditional jump instruction jp instead of jmp
author | Michael Pavone <pavone@retrodev.com> |
---|---|
date | Thu, 06 Feb 2014 10:03:59 -0800 |
parents | b976c6d6e5fb |
children | 6b248602ab84 |
comparison
equal
deleted
inserted
replaced
508:b976c6d6e5fb | 509:b3738ee58195 |
---|---|
35 ret /* return to caller of z80_run */ | 35 ret /* return to caller of z80_run */ |
36 | 36 |
37 forced_sync: | 37 forced_sync: |
38 movw $0, 164(%rsi) | 38 movw $0, 164(%rsi) |
39 call z80_save_context_scratch | 39 call z80_save_context_scratch |
40 pop %rax /*return address in read/write func*/ | 40 pop (%rsi) /*return address in read/write func*/ |
41 pop 104(%rsi) /*return address in native code*/ | 41 pop 104(%rsi) /*return address in native code*/ |
42 mov %rax, (%rsi) | |
43 | 42 |
44 pop %r15 /* restore callee saved regsiters */ | 43 pop %r15 /* restore callee saved regsiters */ |
45 pop %r14 | 44 pop %r14 |
46 pop %r13 | 45 pop %r13 |
47 pop %r12 | 46 pop %r12 |
120 z80_read_ram: | 119 z80_read_ram: |
121 and $0x1FFF, %r13 | 120 and $0x1FFF, %r13 |
122 mov (%r11, %r13), %r13b | 121 mov (%r11, %r13), %r13b |
123 ret | 122 ret |
124 z80_read_bank: | 123 z80_read_bank: |
124 /* approximation of wait states for normal 68K bus access */ | |
125 add $3, %ebp | |
125 push %rsi | 126 push %rsi |
126 mov 144(%rsi), %rsi /* get system context pointer */ | 127 mov 144(%rsi), %rsi /* get system context pointer */ |
127 cmp $0, 120(%rsi) /* check bus busy flag */ | 128 cmp $0, 120(%rsi) /* check bus busy flag */ |
128 pop %rsi | 129 pop %rsi |
129 jne bus_busy | 130 jne bus_busy |
130 /* approximation of wait states for normal 68K bus access */ | |
131 add $3, %ebp | |
132 z80_read_bank_cont: | 131 z80_read_bank_cont: |
133 and $0x7FFF, %r13 | 132 and $0x7FFF, %r13 |
134 cmp $0, %r12 | 133 cmp $0, %r12 |
135 je slow_bank_read | 134 je slow_bank_read |
136 /* 68K memory is byte swapped */ | 135 /* 68K memory is byte swapped */ |
139 ret | 138 ret |
140 slow_bank_read: | 139 slow_bank_read: |
141 /* TODO: Call into C to implement this */ | 140 /* TODO: Call into C to implement this */ |
142 ret | 141 ret |
143 bus_busy: | 142 bus_busy: |
143 cmp %ebp, %edi | |
144 jbe no_adjust | |
144 mov %edi, %ebp | 145 mov %edi, %ebp |
146 no_adjust: | |
145 call forced_sync | 147 call forced_sync |
146 jp z80_read_bank_cont | 148 jmp z80_read_bank_cont |
147 z80_read_ym2612: | 149 z80_read_ym2612: |
148 call z80_save_context | 150 call z80_save_context |
149 mov %r13w, %di | 151 mov %r13w, %di |
150 push %rsi | 152 push %rsi |
151 call z80_read_ym | 153 call z80_read_ym |
236 shl $8, %r13w | 238 shl $8, %r13w |
237 mov %r14b, %r13b | 239 mov %r14b, %r13b |
238 ret | 240 ret |
239 | 241 |
240 z80_read_bank_word: | 242 z80_read_bank_word: |
243 add $3, %ebp /* first read typically has 3 wait states */ | |
241 push %rsi | 244 push %rsi |
242 mov 144(%rsi), %rsi /* get system context pointer */ | 245 mov 144(%rsi), %rsi /* get system context pointer */ |
243 cmp $0, 120(%rsi) /* check bus busy flag */ | 246 cmp $0, 120(%rsi) /* check bus busy flag */ |
244 pop %rsi | 247 pop %rsi |
245 jne bus_busy_word | 248 jne bus_busy_word |
246 add $3, %ebp /* first read typically has 3 wait states */ | |
247 z80_read_bank_word_cont: | 249 z80_read_bank_word_cont: |
248 push %r13 | 250 push %r13 |
249 call z80_read_bank_cont | 251 call z80_read_bank_cont |
250 mov %r13b, %r14b | 252 mov %r13b, %r14b |
251 pop %r13 | 253 pop %r13 |
252 inc %r13 | 254 inc %r13 |
253 call z_inccycles | 255 call z_inccycles |
256 add $4, %ebp /* second read typically has 4 wait states */ | |
254 push %rsi | 257 push %rsi |
255 mov 144(%rsi), %rsi /* get system context pointer */ | 258 mov 144(%rsi), %rsi /* get system context pointer */ |
256 cmp $0, 120(%rsi) /* check bus busy flag */ | 259 cmp $0, 120(%rsi) /* check bus busy flag */ |
257 pop %rsi | 260 pop %rsi |
258 jne bus_busy_word2 | 261 jne bus_busy_word2 |
259 add $4, %ebp /* second read typically has 4 wait states */ | |
260 z80_read_bank_word_cont2: | 262 z80_read_bank_word_cont2: |
261 call z80_read_bank_cont | 263 call z80_read_bank_cont |
262 shl $8, %r13w | 264 shl $8, %r13w |
263 mov %r14b, %r13b | 265 mov %r14b, %r13b |
264 ret | 266 ret |
265 | 267 |
266 bus_busy_word: | 268 bus_busy_word: |
269 cmp %ebp, %edi | |
270 jb no_adjust_word | |
267 mov %edi, %ebp | 271 mov %edi, %ebp |
272 no_adjust_word: | |
268 call forced_sync | 273 call forced_sync |
269 jp z80_read_bank_word_cont | 274 jmp z80_read_bank_word_cont |
275 | |
276 foofoo: | |
277 jmp foofoo | |
270 | 278 |
271 bus_busy_word2: | 279 bus_busy_word2: |
280 cmp %ebp, %edi | |
281 jb no_adjust_word2 | |
272 mov %edi, %ebp | 282 mov %edi, %ebp |
283 no_adjust_word2: | |
273 call forced_sync | 284 call forced_sync |
274 jp z80_read_bank_word_cont2 | 285 jmp z80_read_bank_word_cont2 |
286 blahblah: | |
287 jmp blahblah | |
275 | 288 |
276 .global z80_write_word_highfirst | 289 .global z80_write_word_highfirst |
277 z80_write_word_highfirst: | 290 z80_write_word_highfirst: |
278 call z_inccycles | 291 call z_inccycles |
279 push %r14 | 292 push %r14 |