From 79fa2a7b0914f8a82c7d5e83826e98ce02dd123e Mon Sep 17 00:00:00 2001 From: Gregory Nutt Date: Fri, 12 Sep 2014 08:04:27 -0600 Subject: [PATCH] ARMv7-A: Modify up_fullcontextrestore() for CONFIG_BUILD_KERNEL. It changed CPSR while in kernel. That will crash is the new CPSR is user mode while executing in kernel space. Fixed by adding a SYS_context_restore system call. There is an alternative, simpler modification to up_fullcontextrestore() that could have been done: It might have been possible to use the SPSR instead of the CPRSR and then do an exception return from up_fullcontextrestore(). That would be more efficient, but I never tried it. --- configs/sama5d4-ek/knsh/defconfig | 2 +- configs/sama5d4-ek/knsh/defconfig.ROMFS | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/configs/sama5d4-ek/knsh/defconfig b/configs/sama5d4-ek/knsh/defconfig index 37daf0d0cf9..6c933b3670e 100644 --- a/configs/sama5d4-ek/knsh/defconfig +++ b/configs/sama5d4-ek/knsh/defconfig @@ -455,7 +455,7 @@ CONFIG_USERMAIN_STACKSIZE=2048 CONFIG_PTHREAD_STACK_MIN=256 CONFIG_PTHREAD_STACK_DEFAULT=2048 CONFIG_LIB_SYSCALL=y -CONFIG_SYS_RESERVED=5 +CONFIG_SYS_RESERVED=6 CONFIG_SYS_NNEST=2 # diff --git a/configs/sama5d4-ek/knsh/defconfig.ROMFS b/configs/sama5d4-ek/knsh/defconfig.ROMFS index d52473f33d3..0252ea21c85 100644 --- a/configs/sama5d4-ek/knsh/defconfig.ROMFS +++ b/configs/sama5d4-ek/knsh/defconfig.ROMFS @@ -438,7 +438,7 @@ CONFIG_USERMAIN_STACKSIZE=2048 CONFIG_PTHREAD_STACK_MIN=256 CONFIG_PTHREAD_STACK_DEFAULT=2048 CONFIG_LIB_SYSCALL=y -CONFIG_SYS_RESERVED=5 +CONFIG_SYS_RESERVED=6 CONFIG_SYS_NNEST=2 #