fix(freertos): Fixed incorrect int level restoration on esp32p4

This commit fixes a bug where in the portENABLE_INTERRUPTS() macro
incorrectly restored the interrupt level to 1 (non-CLIC controller).
This commit is contained in:
Sudeep Mohanty
2024-01-03 16:48:13 +01:00
parent 0b8e6c66c4
commit d4ca7c246e
3 changed files with 13 additions and 9 deletions

View File

@@ -6,7 +6,7 @@
* *
* SPDX-License-Identifier: MIT * SPDX-License-Identifier: MIT
* *
* SPDX-FileContributor: 2023 Espressif Systems (Shanghai) CO LTD * SPDX-FileContributor: 2023-2024 Espressif Systems (Shanghai) CO LTD
* *
* Permission is hereby granted, free of charge, to any person obtaining a copy of * Permission is hereby granted, free of charge, to any person obtaining a copy of
* this software and associated documentation files (the "Software"), to deal in * this software and associated documentation files (the "Software"), to deal in
@@ -466,7 +466,7 @@ void vPortTCBPreDeleteHook( void *pxTCB );
// --------------------- Interrupts ------------------------ // --------------------- Interrupts ------------------------
#define portDISABLE_INTERRUPTS() portSET_INTERRUPT_MASK_FROM_ISR() #define portDISABLE_INTERRUPTS() portSET_INTERRUPT_MASK_FROM_ISR()
#define portENABLE_INTERRUPTS() portCLEAR_INTERRUPT_MASK_FROM_ISR(1) #define portENABLE_INTERRUPTS() portCLEAR_INTERRUPT_MASK_FROM_ISR(RVHAL_INTR_ENABLE_THRESH)
/** /**
* ISR versions to enable/disable interrupts * ISR versions to enable/disable interrupts

View File

@@ -6,7 +6,7 @@
* *
* SPDX-License-Identifier: MIT * SPDX-License-Identifier: MIT
* *
* SPDX-FileContributor: 2023 Espressif Systems (Shanghai) CO LTD * SPDX-FileContributor: 2023-2024 Espressif Systems (Shanghai) CO LTD
* *
* Permission is hereby granted, free of charge, to any person obtaining a copy of * Permission is hereby granted, free of charge, to any person obtaining a copy of
* this software and associated documentation files (the "Software"), to deal in * this software and associated documentation files (the "Software"), to deal in
@@ -144,11 +144,7 @@ BaseType_t xPortStartScheduler(void)
/* Setup the hardware to generate the tick. */ /* Setup the hardware to generate the tick. */
vPortSetupTimer(); vPortSetupTimer();
#if !SOC_INT_CLIC_SUPPORTED esprv_intc_int_set_threshold(RVHAL_INTR_ENABLE_THRESH); /* set global interrupt masking level */
esprv_intc_int_set_threshold(1); /* set global INTC masking level */
#else
esprv_intc_int_set_threshold(0); /* set global CLIC masking level. When CLIC is supported, all interrupt priority levels less than or equal to the threshold level are masked. */
#endif /* !SOC_INT_CLIC_SUPPORTED */
rv_utils_intr_global_enable(); rv_utils_intr_global_enable();
vPortYield(); vPortYield();

View File

@@ -1,5 +1,5 @@
/* /*
* SPDX-FileCopyrightText: 2020-2023 Espressif Systems (Shanghai) CO LTD * SPDX-FileCopyrightText: 2020-2024 Espressif Systems (Shanghai) CO LTD
* *
* SPDX-License-Identifier: Apache-2.0 * SPDX-License-Identifier: Apache-2.0
*/ */
@@ -43,6 +43,14 @@ extern "C" {
and spinlocks */ and spinlocks */
#define RVHAL_EXCM_LEVEL 4 #define RVHAL_EXCM_LEVEL 4
/* SW defined interrupt threshold level to allow all interrupts */
#if SOC_INT_CLIC_SUPPORTED
/* set global CLIC masking level. When CLIC is supported, all interrupt priority levels less than or equal to the threshold level are masked. */
#define RVHAL_INTR_ENABLE_THRESH 0
#else
#define RVHAL_INTR_ENABLE_THRESH 1
#endif /* SOC_INT_CLIC_SUPPORTED */
/* --------------------------------------------------- CPU Control ----------------------------------------------------- /* --------------------------------------------------- CPU Control -----------------------------------------------------
* *
* ------------------------------------------------------------------------------------------------------------------ */ * ------------------------------------------------------------------------------------------------------------------ */