Keil Logo

The Read-Modify-Write operation

4.19 The Read-Modify-Write operation

The read-modify-write operation ensures that you modify only the specific bits in a system register that you want to change.

Individual bits in a system register control different system functionality. Modifying the wrong bits in a system register might cause your program to behave incorrectly.
The following example shows how to use the read-modify-write procedure to change some bits in the VFP system register FPSCR, without affecting the other bits:
    VMRS    r10,FPSCR              ; copy FPSCR into the general-purpose r10
    BIC     r10,r10,#0x00370000    ; clear STRIDE bits[21:20] and LEN bits[18:16]
    ORR     r10,r10,#0x00030000    ; set bits[17:16] (STRIDE =1 and LEN = 4)
    VMSR    FPSCR,r10              ; copy r10 back into FPSCR
To read-modify-write a system register, the instruction sequence is:
  1. The first instruction copies the value from the target system register to a temporary general-purpose register.
  2. The next one or more instructions modify the required bits in the general-purpose register. This can be one or both of:
    • BIC to clear to 0 only the bits that must be cleared.
    • ORR to set to 1 only the bits that must be set.
  3. The final instruction writes the value from the general-purpose register to the target system register.
Non-ConfidentialPDF file icon PDF versionARM DUI0379H
Copyright © 2007, 2008, 2011, 2012, 2014-2016 ARM. All rights reserved. 
  Arm logo
Important information

This site uses cookies to store information on your computer. By continuing to use our site, you consent to our cookies.

Change Settings

Privacy Policy Update

Arm’s Privacy Policy has been updated. By continuing to use our site, you consent to Arm’s Privacy Policy. Please review our Privacy Policy to learn more about our collection, use and transfers
of your data.