User guide
Programmers Model 
ARM DDI 0337I Copyright © 2005-2008, 2010 ARM Limited. All rights reserved. 3-16
ID072410 Non-Confidential
3.7 Bit-banding
Bit-banding maps a complete word of memory onto a single bit in the bit-band region. For 
example, writing to one of the alias words sets or clears the corresponding bit in the bit-band 
region. This enables every individual bit in the bit-banding region to be directly accessible from 
a word-aligned address using a single 
LDR
 instruction. It also enables individual bits to be toggled 
without performing a read-modify-write sequence of instructions.
The processor memory map includes two bit-band regions. These occupy the lowest 1MB of the 
SRAM and Peripheral memory regions respectively. These bit-band regions map each word in 
an alias region of memory to a bit in a bit-band region of memory.
The System bus interface contains logic that controls bit-band accesses as follows:
• It remaps bit-band alias addresses to the bit-band region.
• For reads, it extracts the requested bit from the read byte, and returns this in the Least 
Significant Bit (LSB) of the read data returned to the core.
• For writes, it converts the write to an atomic read-modify-write operation.
• The processor does not stall during bit-band operations unless it attempts to access the 
System bus while the bit-band operation is being carried out.
The memory map has two 32-MB alias regions that map to two 1-MB bit-band regions: 
• Accesses to the 32-MB SRAM alias region map to the 1-MB SRAM bit-band region.
• Accesses to the 32-MB peripheral alias region map to the 1-MB peripheral bit-band 
region.
A mapping formula shows how to reference each word in the alias region to a corresponding bit, 
or target bit, in the bit-band region. The mapping formula is:
bit_word_offset = (byte_offset x 32) + (bit_number 
×
 4)
bit_word_addr = bit_band_base + bit_word_offset
where:
•
bit_word_offset
 is the position of the target bit in the bit-band memory region.
•
bit_word_addr
 is the address of the word in the alias memory region that maps to the 
targeted bit.
•
bit_band_base
 is the starting address of the alias region.
•
byte_offset
 is the number of the byte in the bit-band region that contains the targeted bit.
•
bit_number
 is the bit position, 0 to 7, of the targeted bit.
Figure 3-2 on page 3-17 shows examples of bit-band mapping between the SRAM bit-band 
alias region and the SRAM bit-band region:
• The alias word at 
0x23FFFFE0
 maps to bit [0] of the bit-band byte at 
0x200FFFFF
: 
0x23FFFFE0
= 
0x22000000
 + (
0xFFFFF
*
32
) + 
0
*
4
.
• The alias word at 
0x23FFFFFC
 maps to bit [7] of the bit-band byte at 
0x200FFFFF
: 
0x23FFFFFC
= 
0x22000000
 + (
0xFFFFF
*
32
) + 
7
*
4
.
• The alias word at 
0x22000000
 maps to bit [0] of the bit-band byte at 
0x20000000
: 
0x22000000
= 
0x22000000
 + (
0
*
32
) + 
0
*
4
.










