mirror of
https://github.com/FreeRTOS/FreeRTOS-Kernel.git
synced 2025-08-31 15:38:40 -04:00
This reverts commit adbfca5420
.
This commit is contained in:
parent
ebda49376e
commit
10a0b1e54b
7 changed files with 33 additions and 219 deletions
53
portable/ThirdParty/GCC/Xtensa_ESP32/port.c
vendored
53
portable/ThirdParty/GCC/Xtensa_ESP32/port.c
vendored
|
@ -95,23 +95,17 @@
|
|||
|
||||
#include "xtensa_rtos.h"
|
||||
|
||||
#if CONFIG_IDF_TARGET_ESP32S2
|
||||
#include "esp32s2/rom/ets_sys.h"
|
||||
#elif CONFIG_IDF_TARGET_ESP32
|
||||
#include "esp32/rom/ets_sys.h"
|
||||
#endif
|
||||
#include "rom/ets_sys.h"
|
||||
#include "soc/cpu.h"
|
||||
|
||||
#include "FreeRTOS.h"
|
||||
#include "task.h"
|
||||
|
||||
#include "esp_private/panic_reason.h"
|
||||
#include "esp_debug_helpers.h"
|
||||
#include "esp_panic.h"
|
||||
#include "esp_heap_caps.h"
|
||||
#include "esp_private/crosscore_int.h"
|
||||
#include "esp_crosscore_int.h"
|
||||
|
||||
#include "esp_intr_alloc.h"
|
||||
#include "esp_log.h"
|
||||
|
||||
/* Defined in portasm.h */
|
||||
extern void _frxt_tick_timer_init( void );
|
||||
|
@ -137,19 +131,6 @@ unsigned port_interruptNesting[ portNUM_PROCESSORS ] = { 0 }; /* Interrupt nest
|
|||
/* User exception dispatcher when exiting */
|
||||
void _xt_user_exit( void );
|
||||
|
||||
#if CONFIG_FREERTOS_TASK_FUNCTION_WRAPPER
|
||||
/* Wrapper to allow task functions to return (increases stack overhead by 16 bytes) */
|
||||
static void vPortTaskWrapper( TaskFunction_t pxCode,
|
||||
void * pvParameters )
|
||||
{
|
||||
pxCode( pvParameters );
|
||||
/*FreeRTOS tasks should not return. Log the task name and abort. */
|
||||
char * pcTaskName = pcTaskGetTaskName( NULL );
|
||||
ESP_LOGE( "FreeRTOS", "FreeRTOS Task \"%s\" should not return, Aborting now!", pcTaskName );
|
||||
abort();
|
||||
}
|
||||
#endif /* if CONFIG_FREERTOS_TASK_FUNCTION_WRAPPER */
|
||||
|
||||
/*
|
||||
* Stack initialization
|
||||
*/
|
||||
|
@ -185,35 +166,21 @@ void _xt_user_exit( void );
|
|||
frame = ( XtExcFrame * ) sp;
|
||||
|
||||
/* Explicitly initialize certain saved registers */
|
||||
#if CONFIG_FREERTOS_TASK_FUNCTION_WRAPPER
|
||||
frame->pc = ( UBaseType_t ) vPortTaskWrapper; /* task wrapper */
|
||||
#else
|
||||
frame->pc = ( UBaseType_t ) pxCode; /* task entrypoint */
|
||||
#endif
|
||||
frame->a0 = 0; /* to terminate GDB backtrace */
|
||||
frame->a1 = ( UBaseType_t ) sp + XT_STK_FRMSZ; /* physical top of stack frame */
|
||||
frame->exit = ( UBaseType_t ) _xt_user_exit; /* user exception exit dispatcher */
|
||||
frame->pc = ( UBaseType_t ) pxCode; /* task entrypoint */
|
||||
frame->a0 = 0; /* to terminate GDB backtrace */
|
||||
frame->a1 = ( UBaseType_t ) sp + XT_STK_FRMSZ; /* physical top of stack frame */
|
||||
frame->exit = ( UBaseType_t ) _xt_user_exit; /* user exception exit dispatcher */
|
||||
|
||||
/* Set initial PS to int level 0, EXCM disabled ('rfe' will enable), user mode. */
|
||||
/* Also set entry point argument parameter. */
|
||||
#ifdef __XTENSA_CALL0_ABI__
|
||||
#if CONFIG_FREERTOS_TASK_FUNCTION_WRAPPER
|
||||
frame->a2 = ( UBaseType_t ) pxCode;
|
||||
frame->a3 = ( UBaseType_t ) pvParameters;
|
||||
#else
|
||||
frame->a2 = ( UBaseType_t ) pvParameters;
|
||||
#endif
|
||||
frame->a2 = ( UBaseType_t ) pvParameters;
|
||||
frame->ps = PS_UM | PS_EXCM;
|
||||
#else
|
||||
/* + for windowed ABI also set WOE and CALLINC (pretend task was 'call4'd). */
|
||||
#if CONFIG_FREERTOS_TASK_FUNCTION_WRAPPER
|
||||
frame->a6 = ( UBaseType_t ) pxCode;
|
||||
frame->a7 = ( UBaseType_t ) pvParameters;
|
||||
#else
|
||||
frame->a6 = ( UBaseType_t ) pvParameters;
|
||||
#endif
|
||||
frame->a6 = ( UBaseType_t ) pvParameters;
|
||||
frame->ps = PS_UM | PS_EXCM | PS_WOE | PS_CALLINC( 1 );
|
||||
#endif /* ifdef __XTENSA_CALL0_ABI__ */
|
||||
#endif
|
||||
|
||||
#ifdef XT_USE_SWPRI
|
||||
/* Set the initial virtual priority mask value to all 1's. */
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue