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

   ## Summary
   
   fix regresion from https://github.com/apache/nuttx/pull/14881
   reason:
   svc call may trigger hardfalt
   
   Background
   The origin of this issue is our desire to eliminate the function of storing
   "regs" in g_current_regs and instead utilize (*running_task)->xcp.regs for 
storage.
   The benefits of this approach include faster storage speed and
   avoiding multiple accesses to g_current_regs during context switching,
   thus ensuring that whether returning from an interrupt or an exception,
   we consistently use this_task()->xcp.regs
   
   Issue Encountered
   However, when storing registers, we must ensure that 
(running_task)->xcp.regs is invalid
   so that it can be safely overwritten.
   According to the existing logic, the only scenario where 
(running_task)->xcp.regs
   is valid is during restore_context. We must accurately identify this 
scenario.
   Initially, we used the condition (running_task)==NULL for this purpose, but 
we deemed
   this approach unsatisfactory as it did not align well with the actual logic.
   (running_task) should not be NULL. Consequently, we adopted other 
arch-specific methods for judgment,
   but due to special logic in some arch, the judgment was not accurate, 
leading to this issue.
   
   Solution:
   For armv6-m, we haven't found a more suitable solution, so we are sticking 
with (*running_task)==NULL.
   For armv7-m/armv8-m, by removing support for primask, we can achieve 
accurate judgment.
   PRIMASK is a design in armv6-m, that's why arm introduce BASEPRI from 
armv7-m. It's wrong to provide this option for armv7-m/armv8-m arch.
   
   ## Impact
   
   armv6-m
   armv7-m
   armv8-m
   
   ## Testing
   
   CI
   
   
   


-- 
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