arch: arm: update function documentation for __svc
Fixing the documentation for ARM core __svc function, which was outdated and present only for the ARMv7-M version. Signed-off-by: Ioannis Glaropoulos <Ioannis.Glaropoulos@nordicsemi.no>
This commit is contained in:
parent
228702e6e1
commit
533cfa18fa
2 changed files with 17 additions and 4 deletions
|
@ -36,7 +36,7 @@ extern const int _k_neg_eagain;
|
|||
* Given that __swap() is called to effect a cooperative context switch,
|
||||
* only the caller-saved integer registers need to be saved in the thread of the
|
||||
* outgoing thread. This is all performed by the hardware, which stores it in
|
||||
* its exception stack frame, created when handling the svc exception.
|
||||
* its exception stack frame, created when handling the __pendsv exception.
|
||||
*
|
||||
* On ARMv6-M, the intlock key is represented by the PRIMASK register,
|
||||
* as BASEPRI is not available.
|
||||
|
|
|
@ -258,6 +258,17 @@ _thread_irq_disabled:
|
|||
bx lr
|
||||
|
||||
#if defined(CONFIG_ARMV6_M_ARMV8_M_BASELINE)
|
||||
|
||||
/**
|
||||
*
|
||||
* @brief Service call handler
|
||||
*
|
||||
* The service call (svc) is used in the following occasions:
|
||||
* - IRQ offloading
|
||||
* - Kernel run-time exceptions
|
||||
*
|
||||
* @return N/A
|
||||
*/
|
||||
SECTION_FUNC(TEXT, __svc)
|
||||
/* Use EXC_RETURN state to find out if stack frame is on the
|
||||
* MSP or PSP
|
||||
|
@ -305,16 +316,18 @@ _oops:
|
|||
pop {r0, pc}
|
||||
|
||||
#elif defined(CONFIG_ARMV7_M_ARMV8_M_MAINLINE)
|
||||
|
||||
/**
|
||||
*
|
||||
* @brief Service call handler
|
||||
*
|
||||
* The service call (svc) is only used in __swap() to enter handler mode so we
|
||||
* can go through the PendSV exception to perform a context switch.
|
||||
* The service call (svc) is used in the following occasions:
|
||||
* - IRQ offloading
|
||||
* - Kernel run-time exceptions
|
||||
* - System Calls (User mode)
|
||||
*
|
||||
* @return N/A
|
||||
*/
|
||||
|
||||
SECTION_FUNC(TEXT, __svc)
|
||||
tst lr, #0x4 /* did we come from thread mode ? */
|
||||
ite eq /* if zero (equal), came from handler mode */
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue