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
23 ands r0
, r2
, r3 @ save old value of bit
24 \instr r2
, r2
, r3 @ toggle bit
38 save_and_disable_irqs ip
39 ldrb r2
, [r1
, r0
, lsr
#3]
41 strb r2
, [r1
, r0
, lsr
#3]
47 * testop - implement a test_and_xxx_bit operation.
48 * @instr: operational instruction
49 * @store: store instruction
51 * Note: we can trivially conditionalise the store instruction
52 * to avoid dirtying the data cache.
54 .macro testop
, instr
, store
55 add r1
, r1
, r0
, lsr
#3
58 save_and_disable_irqs ip
61 \instr r2
, r2
, r0
, lsl r3