Rewrite fallback unld*
The rewrite assume memory is always aligned at least wordsize * 2.
There is a small chance of this new code causing faults, but for the
moment assume that if unaligned memory access is being used, the condition
will not happen.
The condition is basically, assume 16 byte block with 64 bits:
................
and code calls jit_unld* to read 4 bytes with address of the first x:
........|.xxxx..
because it will read 16 bytes starting at '|', it will read 8 bytes past
the end of a memory map if those 'xxxx' are at the end of the map.
This happens because the new code does not check if the value to load
crosses a word boundary, and loads the one starting at '|', and the next
after the last '.'. Then, it merges the value to form a single
sizeof(jit_word_t) byte value, and finally sign or zero extends the result.
Diffstat (limited to 'lib/jit_arm-cpu.c')
0 files changed, 0 insertions, 0 deletions