mirror of
https://github.com/FreeRTOS/FreeRTOS-Kernel.git
synced 2025-09-10 16:17:44 -04:00
Compare commits
7 commits
1fb6ef2c3c
...
103e595b54
Author | SHA1 | Date | |
---|---|---|---|
|
103e595b54 | ||
|
32e581636f | ||
|
684b34ca8d | ||
|
f5e6151b14 | ||
|
48a4939c9f | ||
|
e3a362b1d1 | ||
|
d1605b581b |
7 changed files with 88 additions and 31 deletions
10
.github/workflows/auto-release.yml
vendored
10
.github/workflows/auto-release.yml
vendored
|
@ -18,6 +18,8 @@ on:
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
release-packager:
|
release-packager:
|
||||||
|
permissions:
|
||||||
|
id-token: write
|
||||||
name: Release Packager
|
name: Release Packager
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
steps:
|
steps:
|
||||||
|
@ -117,6 +119,14 @@ jobs:
|
||||||
./tools/.github/scripts/release.py "$REPO_OWNER" --kernel-repo-path=local_kernel --kernel-commit="$COMMIT_SHA_2" --new-kernel-version="$VERSION_NUMBER" --new-kernel-main-br-version="$MAIN_BR_VERSION_NUMBER"
|
./tools/.github/scripts/release.py "$REPO_OWNER" --kernel-repo-path=local_kernel --kernel-commit="$COMMIT_SHA_2" --new-kernel-version="$VERSION_NUMBER" --new-kernel-main-br-version="$MAIN_BR_VERSION_NUMBER"
|
||||||
exit $?
|
exit $?
|
||||||
|
|
||||||
|
- name: Backup Release Asset
|
||||||
|
uses: FreeRTOS/CI-CD-Github-Actions/artifact-backup@main
|
||||||
|
with:
|
||||||
|
# This is dependent on the release script putting this zip file
|
||||||
|
# in this exact location.
|
||||||
|
artifact_path: ./FreeRTOS-KernelV${{ github.event.inputs.version_number }}.zip
|
||||||
|
release_tag: ${{ github.event.inputs.version_number }}
|
||||||
|
|
||||||
- name: Cleanup
|
- name: Cleanup
|
||||||
env:
|
env:
|
||||||
VERSION_NUMBER: ${{ github.event.inputs.version_number }}
|
VERSION_NUMBER: ${{ github.event.inputs.version_number }}
|
||||||
|
|
|
@ -101,6 +101,16 @@
|
||||||
#define configASSERT_DEFINED 1
|
#define configASSERT_DEFINED 1
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
/* Set configENABLE_PAC and/or configENABLE_BTI to 1 to enable PAC and/or BTI
|
||||||
|
* support and 0 to disable them. These are currently used in ARMv8.1-M ports. */
|
||||||
|
#ifndef configENABLE_PAC
|
||||||
|
#define configENABLE_PAC 0
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifndef configENABLE_BTI
|
||||||
|
#define configENABLE_BTI 0
|
||||||
|
#endif
|
||||||
|
|
||||||
/* Basic FreeRTOS definitions. */
|
/* Basic FreeRTOS definitions. */
|
||||||
#include "projdefs.h"
|
#include "projdefs.h"
|
||||||
|
|
||||||
|
@ -3040,16 +3050,6 @@
|
||||||
#define configCONTROL_INFINITE_LOOP()
|
#define configCONTROL_INFINITE_LOOP()
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/* Set configENABLE_PAC and/or configENABLE_BTI to 1 to enable PAC and/or BTI
|
|
||||||
* support and 0 to disable them. These are currently used in ARMv8.1-M ports. */
|
|
||||||
#ifndef configENABLE_PAC
|
|
||||||
#define configENABLE_PAC 0
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifndef configENABLE_BTI
|
|
||||||
#define configENABLE_BTI 0
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/* Sometimes the FreeRTOSConfig.h settings only allow a task to be created using
|
/* Sometimes the FreeRTOSConfig.h settings only allow a task to be created using
|
||||||
* dynamically allocated RAM, in which case when any task is deleted it is known
|
* dynamically allocated RAM, in which case when any task is deleted it is known
|
||||||
* that both the task's stack and TCB need to be freed. Sometimes the
|
* that both the task's stack and TCB need to be freed. Sometimes the
|
||||||
|
|
|
@ -44,7 +44,7 @@
|
||||||
*
|
*
|
||||||
* In addition to it's value, each list item contains a pointer to the next
|
* In addition to it's value, each list item contains a pointer to the next
|
||||||
* item in the list (pxNext), a pointer to the list it is in (pxContainer)
|
* item in the list (pxNext), a pointer to the list it is in (pxContainer)
|
||||||
* and a pointer to back to the object that contains it. These later two
|
* and a pointer back to the object that contains it. These later two
|
||||||
* pointers are included for efficiency of list manipulation. There is
|
* pointers are included for efficiency of list manipulation. There is
|
||||||
* effectively a two way link between the object containing the list item and
|
* effectively a two way link between the object containing the list item and
|
||||||
* the list item itself.
|
* the list item itself.
|
||||||
|
|
|
@ -170,6 +170,9 @@ __attribute__( ( used ) ) const uint64_t ullICCEOIR = portICCEOIR_END_OF_INTERRU
|
||||||
__attribute__( ( used ) ) const uint64_t ullICCIAR = portICCIAR_INTERRUPT_ACKNOWLEDGE_REGISTER_ADDRESS;
|
__attribute__( ( used ) ) const uint64_t ullICCIAR = portICCIAR_INTERRUPT_ACKNOWLEDGE_REGISTER_ADDRESS;
|
||||||
__attribute__( ( used ) ) const uint64_t ullICCPMR = portICCPMR_PRIORITY_MASK_REGISTER_ADDRESS;
|
__attribute__( ( used ) ) const uint64_t ullICCPMR = portICCPMR_PRIORITY_MASK_REGISTER_ADDRESS;
|
||||||
__attribute__( ( used ) ) const uint64_t ullMaxAPIPriorityMask = ( configMAX_API_CALL_INTERRUPT_PRIORITY << portPRIORITY_SHIFT );
|
__attribute__( ( used ) ) const uint64_t ullMaxAPIPriorityMask = ( configMAX_API_CALL_INTERRUPT_PRIORITY << portPRIORITY_SHIFT );
|
||||||
|
__attribute__( ( used ) ) const uint64_t ullICCHPPIR = portICCHPPIR_HIGHEST_PRIORITY_INTERRUPT_REGISTER_ADDRESS;
|
||||||
|
__attribute__( ( used ) ) const uint64_t ullICCAIAR = portICCAIAR_ALIASED_INTERRUPT_ACKNOWLEDGE_REGISTER_ADDRESS;
|
||||||
|
__attribute__( ( used ) ) const uint64_t ullICCAEOIR = portICCAEOIR_ALIASED_END_OF_INTERRUPT_REGISTER_ADDRESS;
|
||||||
|
|
||||||
/*-----------------------------------------------------------*/
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
|
|
|
@ -307,13 +307,34 @@ FreeRTOS_IRQ_Handler:
|
||||||
/* Maintain the interrupt nesting information across the function call. */
|
/* Maintain the interrupt nesting information across the function call. */
|
||||||
STP X1, X5, [SP, #-0x10]!
|
STP X1, X5, [SP, #-0x10]!
|
||||||
|
|
||||||
/* Read value from the interrupt acknowledge register, which is stored in W0
|
/* Read value from the HPPI register
|
||||||
for future parameter and interrupt clearing use. */
|
* In GIC v2, the HPPI register will contain:
|
||||||
LDR X2, ullICCIARConst
|
* - 0x3FF on GIC ack or spurious IRQ
|
||||||
LDR X3, [X2]
|
* - 0x3FE on pending IRQ within Group 1 (IRQ, non-secure)
|
||||||
LDR W0, [X3] /* ICCIAR in W0 as parameter. */
|
* - IRQn on pending IRQ within Group 0 (FIQ, secure)
|
||||||
|
*
|
||||||
|
* X0 to contain IRQn
|
||||||
|
* X1 to contain IRQn Group number
|
||||||
|
*/
|
||||||
|
LDR X2, ullICCHPPIRConst
|
||||||
|
LDR X2, [X2]
|
||||||
|
LDR W3, [X2]
|
||||||
|
CMP W3, #0x3FE
|
||||||
|
B.NE 1f
|
||||||
|
|
||||||
|
/* if IRQn Group 1, AIAR contains IRQn */
|
||||||
|
2: LDR X2, ullICCAIARConst
|
||||||
|
MOV X1, #1
|
||||||
|
B 0f
|
||||||
|
|
||||||
|
/* if IRQn Group 0, IAR contains IRQn */
|
||||||
|
1: LDR X2, ullICCIARConst
|
||||||
|
MOV X1, #0
|
||||||
|
|
||||||
/* Maintain the ICCIAR value across the function call. */
|
0: LDR W2, [X2]
|
||||||
|
LDR W0, [X2]
|
||||||
|
|
||||||
|
/* Maintain the IRQn value across the function call. */
|
||||||
STP X0, X1, [SP, #-0x10]!
|
STP X0, X1, [SP, #-0x10]!
|
||||||
|
|
||||||
/* Call the C handler. */
|
/* Call the C handler. */
|
||||||
|
@ -324,12 +345,25 @@ FreeRTOS_IRQ_Handler:
|
||||||
DSB SY
|
DSB SY
|
||||||
ISB SY
|
ISB SY
|
||||||
|
|
||||||
/* Restore the ICCIAR value. */
|
/* Restore the IRqn value. */
|
||||||
LDP X0, X1, [SP], #0x10
|
LDP X0, X1, [SP], #0x10
|
||||||
|
|
||||||
/* End IRQ processing by writing ICCIAR to the EOI register. */
|
/* End IRQ processing by writing to the EOI register.
|
||||||
LDR X4, ullICCEOIRConst
|
* In GIV v2, the EOI register to be used depends on the interrupt group:
|
||||||
LDR X4, [X4]
|
* - IRQn Group 0 -> EOI
|
||||||
|
* - IRQn Group 1 -> AEOI
|
||||||
|
*/
|
||||||
|
CMP X1, #1
|
||||||
|
B.NE 1f
|
||||||
|
|
||||||
|
/* if IRQn Group 1, use AEOIR */
|
||||||
|
2: LDR X4, ullICCAEOIRConst
|
||||||
|
B 0f
|
||||||
|
|
||||||
|
/* if IRQn Group 0, use EOIR */
|
||||||
|
1: LDR X4, ullICCEOIRConst
|
||||||
|
|
||||||
|
0: LDR W4, [X4]
|
||||||
STR W0, [X4]
|
STR W0, [X4]
|
||||||
|
|
||||||
/* Restore the critical nesting count. */
|
/* Restore the critical nesting count. */
|
||||||
|
@ -420,6 +454,9 @@ ullPortInterruptNestingConst: .dword ullPortInterruptNesting
|
||||||
ullPortYieldRequiredConst: .dword ullPortYieldRequired
|
ullPortYieldRequiredConst: .dword ullPortYieldRequired
|
||||||
ullICCIARConst: .dword ullICCIAR
|
ullICCIARConst: .dword ullICCIAR
|
||||||
ullICCEOIRConst: .dword ullICCEOIR
|
ullICCEOIRConst: .dword ullICCEOIR
|
||||||
|
ullICCHPPIRConst: .dword ullICCHPPIR
|
||||||
|
ullICCAIARConst: .dword ullICCAIAR
|
||||||
|
ullICCAEOIRConst: .dword ullICCAEOIR
|
||||||
vApplicationIRQHandlerConst: .word vApplicationIRQHandler
|
vApplicationIRQHandlerConst: .word vApplicationIRQHandler
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -204,14 +204,21 @@ void FreeRTOS_Tick_Handler( void );
|
||||||
#define portICCEOIR_END_OF_INTERRUPT_OFFSET ( 0x10 )
|
#define portICCEOIR_END_OF_INTERRUPT_OFFSET ( 0x10 )
|
||||||
#define portICCBPR_BINARY_POINT_OFFSET ( 0x08 )
|
#define portICCBPR_BINARY_POINT_OFFSET ( 0x08 )
|
||||||
#define portICCRPR_RUNNING_PRIORITY_OFFSET ( 0x14 )
|
#define portICCRPR_RUNNING_PRIORITY_OFFSET ( 0x14 )
|
||||||
|
#define portICCHPPIR_HIGHEST_PRIORITY_INTERRUPT_OFFSET ( 0x18 )
|
||||||
|
#define portICCAIAR_ALIASED_INTERRUPT_ACKNOWLEDGE_OFFSET ( 0x20 )
|
||||||
|
#define portICCAEOIR_ALIASED_END_OF_INTERRUPT_OFFSET ( 0x24 )
|
||||||
|
|
||||||
|
#define portINTERRUPT_CONTROLLER_CPU_INTERFACE_ADDRESS ( configINTERRUPT_CONTROLLER_BASE_ADDRESS + configINTERRUPT_CONTROLLER_CPU_INTERFACE_OFFSET )
|
||||||
|
#define portICCPMR_PRIORITY_MASK_REGISTER ( *( ( volatile uint32_t * ) ( portINTERRUPT_CONTROLLER_CPU_INTERFACE_ADDRESS + portICCPMR_PRIORITY_MASK_OFFSET ) ) )
|
||||||
|
#define portICCIAR_INTERRUPT_ACKNOWLEDGE_REGISTER_ADDRESS ( portINTERRUPT_CONTROLLER_CPU_INTERFACE_ADDRESS + portICCIAR_INTERRUPT_ACKNOWLEDGE_OFFSET )
|
||||||
|
#define portICCEOIR_END_OF_INTERRUPT_REGISTER_ADDRESS ( portINTERRUPT_CONTROLLER_CPU_INTERFACE_ADDRESS + portICCEOIR_END_OF_INTERRUPT_OFFSET )
|
||||||
|
#define portICCPMR_PRIORITY_MASK_REGISTER_ADDRESS ( portINTERRUPT_CONTROLLER_CPU_INTERFACE_ADDRESS + portICCPMR_PRIORITY_MASK_OFFSET )
|
||||||
|
#define portICCBPR_BINARY_POINT_REGISTER ( *( ( const volatile uint32_t * ) ( portINTERRUPT_CONTROLLER_CPU_INTERFACE_ADDRESS + portICCBPR_BINARY_POINT_OFFSET ) ) )
|
||||||
|
#define portICCRPR_RUNNING_PRIORITY_REGISTER ( *( ( const volatile uint32_t * ) ( portINTERRUPT_CONTROLLER_CPU_INTERFACE_ADDRESS + portICCRPR_RUNNING_PRIORITY_OFFSET ) ) )
|
||||||
|
#define portICCHPPIR_HIGHEST_PRIORITY_INTERRUPT_REGISTER_ADDRESS ( portINTERRUPT_CONTROLLER_CPU_INTERFACE_ADDRESS + portICCHPPIR_HIGHEST_PRIORITY_INTERRUPT_OFFSET )
|
||||||
|
#define portICCAIAR_ALIASED_INTERRUPT_ACKNOWLEDGE_REGISTER_ADDRESS ( portINTERRUPT_CONTROLLER_CPU_INTERFACE_ADDRESS + portICCAIAR_ALIASED_INTERRUPT_ACKNOWLEDGE_OFFSET )
|
||||||
|
#define portICCAEOIR_ALIASED_END_OF_INTERRUPT_REGISTER_ADDRESS ( portINTERRUPT_CONTROLLER_CPU_INTERFACE_ADDRESS + portICCAEOIR_ALIASED_END_OF_INTERRUPT_OFFSET )
|
||||||
|
|
||||||
#define portINTERRUPT_CONTROLLER_CPU_INTERFACE_ADDRESS ( configINTERRUPT_CONTROLLER_BASE_ADDRESS + configINTERRUPT_CONTROLLER_CPU_INTERFACE_OFFSET )
|
|
||||||
#define portICCPMR_PRIORITY_MASK_REGISTER ( *( ( volatile uint32_t * ) ( portINTERRUPT_CONTROLLER_CPU_INTERFACE_ADDRESS + portICCPMR_PRIORITY_MASK_OFFSET ) ) )
|
|
||||||
#define portICCIAR_INTERRUPT_ACKNOWLEDGE_REGISTER_ADDRESS ( portINTERRUPT_CONTROLLER_CPU_INTERFACE_ADDRESS + portICCIAR_INTERRUPT_ACKNOWLEDGE_OFFSET )
|
|
||||||
#define portICCEOIR_END_OF_INTERRUPT_REGISTER_ADDRESS ( portINTERRUPT_CONTROLLER_CPU_INTERFACE_ADDRESS + portICCEOIR_END_OF_INTERRUPT_OFFSET )
|
|
||||||
#define portICCPMR_PRIORITY_MASK_REGISTER_ADDRESS ( portINTERRUPT_CONTROLLER_CPU_INTERFACE_ADDRESS + portICCPMR_PRIORITY_MASK_OFFSET )
|
|
||||||
#define portICCBPR_BINARY_POINT_REGISTER ( *( ( const volatile uint32_t * ) ( portINTERRUPT_CONTROLLER_CPU_INTERFACE_ADDRESS + portICCBPR_BINARY_POINT_OFFSET ) ) )
|
|
||||||
#define portICCRPR_RUNNING_PRIORITY_REGISTER ( *( ( const volatile uint32_t * ) ( portINTERRUPT_CONTROLLER_CPU_INTERFACE_ADDRESS + portICCRPR_RUNNING_PRIORITY_OFFSET ) ) )
|
|
||||||
|
|
||||||
#define portMEMORY_BARRIER() __asm volatile ( "" ::: "memory" )
|
#define portMEMORY_BARRIER() __asm volatile ( "" ::: "memory" )
|
||||||
|
|
||||||
|
|
6
portable/ThirdParty/GCC/Posix/port.c
vendored
6
portable/ThirdParty/GCC/Posix/port.c
vendored
|
@ -140,6 +140,8 @@ static void prvThreadKeyDestructor( void * pvData )
|
||||||
static void prvInitThreadKey( void )
|
static void prvInitThreadKey( void )
|
||||||
{
|
{
|
||||||
pthread_key_create( &xThreadKey, prvThreadKeyDestructor );
|
pthread_key_create( &xThreadKey, prvThreadKeyDestructor );
|
||||||
|
/* Destroy xThreadKey when the process exits. */
|
||||||
|
atexit( prvDestroyThreadKey );
|
||||||
}
|
}
|
||||||
/*-----------------------------------------------------------*/
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
|
@ -193,7 +195,7 @@ void prvFatalError( const char * pcCall,
|
||||||
}
|
}
|
||||||
/*-----------------------------------------------------------*/
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
static void prvPortSetCurrentThreadName( char * pxThreadName )
|
static void prvPortSetCurrentThreadName( const char * pxThreadName )
|
||||||
{
|
{
|
||||||
#ifdef __APPLE__
|
#ifdef __APPLE__
|
||||||
pthread_setname_np( pxThreadName );
|
pthread_setname_np( pxThreadName );
|
||||||
|
@ -315,8 +317,6 @@ BaseType_t xPortStartScheduler( void )
|
||||||
/* Restore original signal mask. */
|
/* Restore original signal mask. */
|
||||||
( void ) pthread_sigmask( SIG_SETMASK, &xSchedulerOriginalSignalMask, NULL );
|
( void ) pthread_sigmask( SIG_SETMASK, &xSchedulerOriginalSignalMask, NULL );
|
||||||
|
|
||||||
prvDestroyThreadKey();
|
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
/*-----------------------------------------------------------*/
|
/*-----------------------------------------------------------*/
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue