c11_atomic_load is implemented using cmpxcghg16b on x86_64 (assuming
compiler-rt is compiled with a new-enough -march= flag) and this
instruction requires a writable memory mapping.
To allow for this case, use a writable mapping and make the atomic_load
function signature match the one atomic.c (non-const src pointer).
I do not know if __atomic_load needs to support read-only mappings, but if
it does we need to disable the lock-free path for 16-byte atomic load.
I believe this is currently only an issue on macOS systems since the clang
driver defaults to enabling cmpxchg16b support, whereas other targets need an
explicit -march= flag.
This change allows atomic_test.c to pass on my macOS system, before it would
fail with a EXC_BAD_ACCESS error.