That looks like it’s using atomic types (which just lower to a volatile write and a fence). I have four addresses for every register. The read-write address An address where any 1 bit written sets to 1, and zeros bits have no effect. An address where any 1 bit written sets to 0, and zero bits have no effect. An address where any 1 bit written toggles the existing bit and zero bits have no effect.