Maybe we should just pass the protection bits in l2_setblocks, and map the
kernel text/rodata as RO right away. It would also make it possible to map
rodata/data as non executable, with PXN|UXN. (Looking at the code it seems
to me rodata/data are executable currently.)
We would make three calls, to map
.text as RX
.rodata as R
.data as RW
a bit like in amd64[1]. Regarding the DDB ifndef, probably there must be
a bit in ARM64 saying "disable page protection", so it could be set when
we enter DDB, and we could remove the ifndef.
I get it. I need to write db_write_text(), and when I finish,
set kernel text/rodata READONLY by default.
Ah...I had forgotten deleting execute bit. We need more 2Mbyte alignment
between .text/.rodata. I will fix.