diff options
author | Trygve Laugstøl <trygvis@inamo.no> | 2017-01-25 22:23:13 +0100 |
---|---|---|
committer | Trygve Laugstøl <trygvis@inamo.no> | 2017-01-25 22:23:17 +0100 |
commit | 2fff65aed2477a503c72629d27e2a330d30c02d1 (patch) | |
tree | 96fd9f2f8151e266c0cf8563a714d7bab8aa7cb0 /tmp/STM32F10x_StdPeriph_Lib_V3.5.0/Project/STM32F10x_StdPeriph_Examples/CortexM3/Mode_Privilege/main.c | |
parent | 41fdd2b1f35bcb4224fdb8fee2b959e09d1f5916 (diff) | |
download | stm32f103-playground-2fff65aed2477a503c72629d27e2a330d30c02d1.tar.gz stm32f103-playground-2fff65aed2477a503c72629d27e2a330d30c02d1.tar.bz2 stm32f103-playground-2fff65aed2477a503c72629d27e2a330d30c02d1.tar.xz stm32f103-playground-2fff65aed2477a503c72629d27e2a330d30c02d1.zip |
o Seemingly working Mutexes.
o Dropping the privileged/unprivileged split for now.
Diffstat (limited to 'tmp/STM32F10x_StdPeriph_Lib_V3.5.0/Project/STM32F10x_StdPeriph_Examples/CortexM3/Mode_Privilege/main.c')
-rw-r--r-- | tmp/STM32F10x_StdPeriph_Lib_V3.5.0/Project/STM32F10x_StdPeriph_Examples/CortexM3/Mode_Privilege/main.c | 180 |
1 files changed, 0 insertions, 180 deletions
diff --git a/tmp/STM32F10x_StdPeriph_Lib_V3.5.0/Project/STM32F10x_StdPeriph_Examples/CortexM3/Mode_Privilege/main.c b/tmp/STM32F10x_StdPeriph_Lib_V3.5.0/Project/STM32F10x_StdPeriph_Examples/CortexM3/Mode_Privilege/main.c deleted file mode 100644 index 9b97506..0000000 --- a/tmp/STM32F10x_StdPeriph_Lib_V3.5.0/Project/STM32F10x_StdPeriph_Examples/CortexM3/Mode_Privilege/main.c +++ /dev/null @@ -1,180 +0,0 @@ -/** - ****************************************************************************** - * @file CortexM3/Mode_Privilege/main.c - * @author MCD Application Team - * @version V3.5.0 - * @date 08-April-2011 - * @brief Main program body. - ****************************************************************************** - * @attention - * - * THE PRESENT FIRMWARE WHICH IS FOR GUIDANCE ONLY AIMS AT PROVIDING CUSTOMERS - * WITH CODING INFORMATION REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO SAVE - * TIME. AS A RESULT, STMICROELECTRONICS SHALL NOT BE HELD LIABLE FOR ANY - * DIRECT, INDIRECT OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING - * FROM THE CONTENT OF SUCH FIRMWARE AND/OR THE USE MADE BY CUSTOMERS OF THE - * CODING INFORMATION CONTAINED HEREIN IN CONNECTION WITH THEIR PRODUCTS. - * - * <h2><center>© COPYRIGHT 2011 STMicroelectronics</center></h2> - ****************************************************************************** - */ - -/* Includes ------------------------------------------------------------------*/ -#include "stm32f10x.h" - -/** @addtogroup STM32F10x_StdPeriph_Examples - * @{ - */ - -/** @addtogroup CortexM3_Mode_Privilege - * @{ - */ - -/* Private typedef -----------------------------------------------------------*/ -/* Private define ------------------------------------------------------------*/ -#define SP_PROCESS_SIZE 0x200 /* Process stack size */ -#define SP_PROCESS 0x02 /* Process stack */ -#define SP_MAIN 0x00 /* Main stack */ -#define THREAD_MODE_PRIVILEGED 0x00 /* Thread mode has privileged access */ -#define THREAD_MODE_UNPRIVILEGED 0x01 /* Thread mode has unprivileged access */ - -/* Private macro -------------------------------------------------------------*/ -#if defined ( __CC_ARM ) -__ASM void __SVC(void) -{ - SVC 0x01 - BX R14 -} -#elif defined ( __ICCARM__ ) -static __INLINE void __SVC() { __ASM ("svc 0x01");} -#elif defined ( __GNUC__ ) -static __INLINE void __SVC() { __ASM volatile ("svc 0x01");} - -#endif - -/* Private variables ---------------------------------------------------------*/ -__IO uint8_t PSPMemAlloc[SP_PROCESS_SIZE]; -__IO uint32_t Index = 0, PSPValue = 0, CurrentStack = 0, ThreadMode = 0; - -/* Private function prototypes -----------------------------------------------*/ -/* Private functions ---------------------------------------------------------*/ - -/** - * @brief Main program. - * @param None - * @retval None - */ -int main(void) -{ - /*!< At this stage the microcontroller clock setting is already configured, - this is done through SystemInit() function which is called from startup - file (startup_stm32f10x_xx.s) before to branch to application main. - To reconfigure the default setting of SystemInit() function, refer to - system_stm32f10x.c file - */ - -/* Switch Thread mode Stack from Main to Process -----------------------------*/ - /* Initialize memory reserved for Process Stack */ - for(Index = 0; Index < SP_PROCESS_SIZE; Index++) - { - PSPMemAlloc[Index] = 0x00; - } - - /* Set Process stack value */ - __set_PSP((uint32_t)PSPMemAlloc + SP_PROCESS_SIZE); - - /* Select Process Stack as Thread mode Stack */ - __set_CONTROL(SP_PROCESS); - - /* Get the Thread mode stack used */ - if((__get_CONTROL() & 0x02) == SP_MAIN) - { - /* Main stack is used as the current stack */ - CurrentStack = SP_MAIN; - } - else - { - /* Process stack is used as the current stack */ - CurrentStack = SP_PROCESS; - - /* Get process stack pointer value */ - PSPValue = __get_PSP(); - } - -/* Switch Thread mode from privileged to unprivileged ------------------------*/ - /* Thread mode has unprivileged access */ - __set_CONTROL(THREAD_MODE_UNPRIVILEGED | SP_PROCESS); - - /* Unprivileged access mainly affect ability to: - - Use or not use certain instructions such as MSR fields - - Access System Control Space (SCS) registers such as NVIC and SysTick */ - - /* Check Thread mode privilege status */ - if((__get_CONTROL() & 0x01) == THREAD_MODE_PRIVILEGED) - { - /* Thread mode has privileged access */ - ThreadMode = THREAD_MODE_PRIVILEGED; - } - else - { - /* Thread mode has unprivileged access*/ - ThreadMode = THREAD_MODE_UNPRIVILEGED; - } - -/* Switch back Thread mode from unprivileged to privileged -------------------*/ - /* Try to switch back Thread mode to privileged (Not possible, this can be - done only in Handler mode) */ - __set_CONTROL(THREAD_MODE_PRIVILEGED | SP_PROCESS); - - /* Generate a system call exception, and in the ISR switch back Thread mode - to privileged */ - __SVC(); - - /* Check Thread mode privilege status */ - if((__get_CONTROL() & 0x01) == THREAD_MODE_PRIVILEGED) - { - /* Thread mode has privileged access */ - ThreadMode = THREAD_MODE_PRIVILEGED; - } - else - { - /* Thread mode has unprivileged access*/ - ThreadMode = THREAD_MODE_UNPRIVILEGED; - } - - while (1) - { - } -} - -#ifdef USE_FULL_ASSERT - -/** - * @brief Reports the name of the source file and the source line number - * where the assert_param error has occurred. - * @param file: pointer to the source file name - * @param line: assert_param error line source number - * @retval None - */ -void assert_failed(uint8_t* file, uint32_t line) -{ - /* User can add his own implementation to report the file name and line number, - ex: printf("Wrong parameters value: file %s on line %d\r\n", file, line) */ - - /* Infinite loop */ - while (1) - { - } -} - -#endif - -/** - * @} - */ - -/** - * @} - */ - -/******************* (C) COPYRIGHT 2011 STMicroelectronics *****END OF FILE****/ |