
For a reason currently unknown to us, the qemu-linaro emulator sometimes produces a Prefetch Abort exception with a fault location (IFAR) rather different from the location of the instruction being executed (LR corrected by 4). So far it has been observed in the __udivmodsi4 routine of various processes, where the fault address is for the first byte of the next page after the current instruction, which itself is 44-64 bytes away from the start of that next page. The affected instruction does not perform any sort of memory access. Short of debugging qemu-linaro itself, we have no choice but to disable the assert that previously went off in case the IFAR and corrected LR are not equal. Since we have not yet observed this case on actual hardware, the kernel prints a warning when detecting such a mismatch for the first time. For the qemu-linaro case, the kernel's actual page fault handling logic already handles this strange case just fine. Change-Id: Ibd19e624149ab4e68bfe75b918ec1554b825a431
…
Description
Languages
C
78.2%
Roff
10.2%
Assembly
4.6%
Shell
3.7%
Makefile
1.6%
Other
1.2%