| Line 240... |
Line 240... |
| 240 |
__asm__ volatile("displaylcd_dither_y: \n");
|
240 |
__asm__ volatile("displaylcd_dither_y: \n");
|
| 241 |
__asm__ volatile(" ldr lr, [sp] \n");
|
241 |
__asm__ volatile(" ldr lr, [sp] \n");
|
| 242 |
__asm__ volatile(" mov r5, #0 \n");
|
242 |
__asm__ volatile(" mov r5, #0 \n");
|
| 243 |
__asm__ volatile(" mov r7, r8 \n");
|
243 |
__asm__ volatile(" mov r7, r8 \n");
|
| 244 |
__asm__ volatile("displaylcd_dither_x: \n"); // the lcd can accept one pixel every 25 clocks
|
244 |
__asm__ volatile("displaylcd_dither_x: \n"); // the lcd can accept one pixel every 25 clocks
|
| 245 |
__asm__ volatile(" ldr r0, [r3] \n"); // 1 cycle, 2 mem, r0 latency 4, r3 early
|
245 |
__asm__ volatile(" ldr r0, [r3] \n"); // 1 cycle, 2 mem, r0 latency 4, r3 early
|
| 246 |
__asm__ volatile(" add r3, r3, r10 \n"); // 1 cycle
|
246 |
__asm__ volatile(" add r3, r3, r10 \n"); // 1 cycle
|
| 247 |
__asm__ volatile(" ldr r1, [r7,#4] \n"); // 1 cycle, 1 mem, r1 latency 3, r7 early
|
247 |
__asm__ volatile(" ldr r1, [r7,#4] \n"); // 1 cycle, 1 mem, r1 latency 3, r7 early
|
| 248 |
__asm__ volatile(" subs lr, lr, #1 \n"); // 1 cycle
|
248 |
__asm__ volatile(" subs lr, lr, #1 \n"); // 1 cycle
|
| 249 |
__asm__ volatile(" ssub8 r0, r0, r4 \n"); // 1 cycle
|
249 |
__asm__ volatile(" ssub8 r0, r0, r4 \n"); // 1 cycle
|
| 250 |
__asm__ volatile(" sadd8 r1, r1, r5 \n"); // 1 cycle
|
250 |
__asm__ volatile(" sadd8 r1, r1, r5 \n"); // 1 cycle
|
| 251 |
__asm__ volatile(" qadd8 r0, r0, r1 \n"); // 1 cycle, r0 latency 2
|
251 |
__asm__ volatile(" qadd8 r0, r0, r1 \n"); // 1 cycle, r0 latency 2
|
| 252 |
// bubble (due to r0 latency)
|
252 |
// bubble (due to r0 latency)
|
| 253 |
__asm__ volatile(" sadd8 r0, r0, r4 \n"); // 1 cycle
|
253 |
__asm__ volatile(" sadd8 r0, r0, r4 \n"); // 1 cycle
|
| 254 |
__asm__ volatile(" str r0, [r9] \n"); // 1 cycle, 1 mem, r9 early
|
254 |
__asm__ volatile(" str r0, [r9] \n"); // 1 cycle, 1 mem, r9 early
|
| 255 |
__asm__ volatile(" bic r2, r0, r6 \n"); // 1 cycle
|
255 |
__asm__ volatile(" bic r2, r0, r6 \n"); // 1 cycle
|
| 256 |
__asm__ volatile(" and r1, r6, r0,lsr#6 \n"); // 1 cycle, r0 early
|
256 |
__asm__ volatile(" and r1, r6, r0,lsr#6 \n"); // 1 cycle, r0 early
|
| 257 |
__asm__ volatile(" orr r2, r2, r1 \n"); // 1 cycle
|
257 |
__asm__ volatile(" orr r2, r2, r1 \n"); // 1 cycle
|
| 258 |
__asm__ volatile(" mov r1, r5 \n"); // 1 cycle
|
258 |
__asm__ volatile(" mov r1, r5 \n"); // 1 cycle
|
| 259 |
__asm__ volatile(" shsub8 r5, r0, r2 \n"); // 1 cycle
|
259 |
__asm__ volatile(" shsub8 r5, r0, r2 \n"); // 1 cycle
|
| 260 |
__asm__ volatile(" shadd8 r1, r1, r5 \n"); // 1 cycle
|
260 |
__asm__ volatile(" shadd8 r1, r1, r5 \n"); // 1 cycle
|
| 261 |
__asm__ volatile(" str r1, [r7], #4 \n"); // 1 cycle, 1 mem, r7 early
|
261 |
__asm__ volatile(" str r1, [r7], #4 \n"); // 1 cycle, 1 mem, r7 early
|
| 262 |
__asm__ volatile(" nop \n"); // 2 cycles
|
262 |
__asm__ volatile(" nop \n"); // 2 cycles
|
| 263 |
__asm__ volatile(" nop \n"); // 2 cycles
|
263 |
__asm__ volatile(" nop \n"); // 2 cycles
|
| 264 |
__asm__ volatile(" nop \n"); // 2 cycles
|
264 |
__asm__ volatile(" nop \n"); // 2 cycles
|
| 265 |
__asm__ volatile(" nop \n"); // 2 cycles
|
265 |
__asm__ volatile(" nop \n"); // 2 cycles
|
| 266 |
__asm__ volatile(" bne displaylcd_dither_x \n");
|
266 |
__asm__ volatile(" bne displaylcd_dither_x \n");
|
| 267 |
__asm__ volatile(" add r3, r3, r11 \n");
|
267 |
__asm__ volatile(" add r3, r3, r11 \n");
|
| 268 |
__asm__ volatile(" subs r12, r12, #1 \n");
|
268 |
__asm__ volatile(" subs r12, r12, #1 \n");
|
| 269 |
__asm__ volatile(" bne displaylcd_dither_y \n");
|
269 |
__asm__ volatile(" bne displaylcd_dither_y \n");
|
| 270 |
__asm__ volatile("displaylcd_dither_free: \n");
|
270 |
__asm__ volatile("displaylcd_dither_free: \n");
|