Если вы хотите безопасно писать / читать отображенную память, вы можете использовать уже существующий фрагмент кода, предназначенный именно для этой цели, например, заголовочный файл ARM mmio.h .
Результирующий код, эквивалентный коду в вашем примере, будет:
#include<mmio.h>
// ...
mmio_write_32(MY_ADDRESS, 0x1234);
Поскольку функции, включенные в заголовок, являются статическими встроенными, не будет никакого снижения производительности, вызванного вызовом подпрограммы - код будет просто вставлен туда, где он вызывается в вашей программе.
Поскольку этот заголовочный файл широко используется, вы можете разумно прекратить беспокоиться об операциях чтения / записи в вашем реестре, используя его.
И поскольку он лицензирован в соответствии с BSD 3-Clause , вы можете использовать его как в своих коммерческих, так и в домашних проектах.