arch/arm64: Move group_addrenv to arm64_syscall_switch

Signed-off-by: Xiang Xiao <xiaoxiang@xiaomi.com>
This commit is contained in:
Xiang Xiao 2022-11-19 14:59:34 +08:00 committed by Alan Carvalho de Assis
parent 6898409d04
commit f9479885ba
6 changed files with 12 additions and 48 deletions

View File

@ -133,15 +133,6 @@ void up_block_task(struct tcb_s *tcb, tstate_t task_state)
{
struct tcb_s *nexttcb = this_task();
#ifdef CONFIG_ARCH_ADDRENV
/* Make sure that the address environment for the previously
* running task is closed down gracefully (data caches dump,
* MMU flushed) and set up the address environment for the new
* thread at the head of the ready-to-run list.
*/
group_addrenv(nexttcb);
#endif
/* Reset scheduler parameters */
nxsched_resume_scheduler(nexttcb);

View File

@ -142,16 +142,6 @@ void up_exit(int status)
nxsched_resume_scheduler(tcb);
#ifdef CONFIG_ARCH_ADDRENV
/* Make sure that the address environment for the previously running
* task is closed down gracefully (data caches dump, MMU flushed) and
* set up the address environment for the new thread at the head of
* the ready-to-run list.
*/
group_addrenv(tcb);
#endif
/* Then switch contexts */
arm64_fullcontextrestore(tcb->xcp.regs);

View File

@ -96,15 +96,6 @@ void up_release_pending(void)
{
struct tcb_s *nexttcb = this_task();
#ifdef CONFIG_ARCH_ADDRENV
/* Make sure that the address environment for the previously
* running task is closed down gracefully (data caches dump,
* MMU flushed) and set up the address environment for the new
* thread at the head of the ready-to-run list.
*/
group_addrenv(nexttcb);
#endif
/* Update scheduler parameters */
nxsched_resume_scheduler(nexttcb);

View File

@ -151,15 +151,6 @@ void up_reprioritize_rtr(struct tcb_s *tcb, uint8_t priority)
{
struct tcb_s *nexttcb = this_task();
#ifdef CONFIG_ARCH_ADDRENV
/* Make sure that the address environment for the previously
* running task is closed down gracefully (data caches dump,
* MMU flushed) and set up the address environment for the new
* thread at the head of the ready-to-run list.
*/
group_addrenv(nexttcb);
#endif
/* Update scheduler parameters */
nxsched_resume_scheduler(nexttcb);

View File

@ -202,10 +202,20 @@ uint64_t *arm64_syscall_switch(uint64_t * regs)
break;
}
/* Restore the cpu lock */
if ((uint64_t *)f_regs != ret_regs)
{
#ifdef CONFIG_ARCH_ADDRENV
/* Make sure that the address environment for the previously
* running task is closed down gracefully (data caches dump,
* MMU flushed) and set up the address environment for the new
* thread at the head of the ready-to-run list.
*/
group_addrenv(NULL);
#endif
/* Restore the cpu lock */
restore_critical_section();
}

View File

@ -115,15 +115,6 @@ void up_unblock_task(struct tcb_s *tcb)
{
struct tcb_s *nexttcb = this_task();
#ifdef CONFIG_ARCH_ADDRENV
/* Make sure that the address environment for the previously
* running task is closed down gracefully (data caches dump,
* MMU flushed) and set up the address environment for the new
* thread at the head of the ready-to-run list.
*/
group_addrenv(nexttcb);
#endif
/* Update scheduler parameters */
nxsched_resume_scheduler(nexttcb);