2 #if __LINUX_ARM_ARCH__ >= 6 && defined(CONFIG_CPU_32v6K)
5 and r3, r0, #7 @ Get bit offset
6 add r1, r1, r0, lsr #3 @ Get byte offset
16 .macro testop, instr, store
17 and r3, r0, #7 @ Get bit offset
19 add r1, r1, r0, lsr #3 @ Get byte offset
20 mov r3, r2, lsl r3 @ create mask
22 ands r0, r2, r3 @ save old value of bit
23 \instr r2, r2, r3 @ toggle bit
36 save_and_disable_irqs ip
37 ldrb r2, [r1, r0, lsr #3]
39 strb r2, [r1, r0, lsr #3]
45 * testop - implement a test_and_xxx_bit operation.
46 * @instr: operational instruction
47 * @store: store instruction
49 * Note: we can trivially conditionalise the store instruction
50 * to avoid dirtying the data cache.
52 .macro testop, instr, store
53 add r1, r1, r0, lsr #3
56 save_and_disable_irqs ip
59 \instr r2, r2, r0, lsl r3