Miscellany
public text v1 · immutableexecute_load_##load_type: ;\
tst r0, #0xF0000000 /* make sure address is in range */;\
bne ext_load_##load_type /* if not do ext load */;\
;\
ldr r2, 1f /* r2 = memory_map_read */;\
mov r1, r0, lsr #15 /* r1 = page index of address */;\
ldr r2, [r2, lr, lsl #2] /* r0 = memory page */;\
;\
cmp r2, #0 /* see if map is ext */;\
beq ext_load_##load_type /* if so do ext load */;\
;\
mov r0, r0, lsl #17 /* isolate bottom 15 bits in top */;\
mov r0, r0, lsr #17 /* like performing and 0x7FFF */;\
load_op r0, [r2, r0] /* load result */;\
;\
unalign_adjust_##load_type(r0) /* adjust result for unalignment */;\
bx lr /* return */;\
;\
1: ;\
.word memory_map_read ;\
;\
ext_load_##load_type: ;\
call_c_function(read_memory##load_function) ;\
sign_extend_##load_type(r0) /* sign extend result */;\
bx lr /* return */;\