casaroli opened a new pull request, #20727:
URL: https://github.com/apache/nuttx/pull/20727

   ## Summary
   
   For an `ADRP` at page offset 0xff8 or 0xffc, the arm64 relocation code 
rewrites it as `ADR` to avoid Cortex-A53 erratum 843419. `ADR` reaches only 1 
MB, so a module with more than about 1 MB between an instruction and its data 
failed to load with `EINVAL` ("Out of range for ADR").
   
   This PR keeps the `ADRP` in that case; it reaches 4 GB. (Linux emits a 
veneer instead; here only that one instruction keeps the erratum exposure.)
   
   ## Impact
   
   arm64 module loading only: large modules load instead of failing.
   
   ## Testing
   
   Builds: `qemu-armv8a:nsh`, `qemu-armv8a:knsh`, `lm3s6965-ek:qemu-flat`.
   
   `tools/checkpatch.sh -c -u -m -g` passes.
   
   On `qemu-armv8a:knsh`, a module with more than 1 MB between an instruction 
and its data failed to load with `EINVAL`; with the change it loads and runs.
   


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]

Reply via email to