Subversion Repositories freemyipod

Rev

Rev 751 | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 751 Rev 766
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");