Merge branch 'fix/tee_hal_ci_failures' into 'master'

ci(hal/tee): Fix intermittent hang-ups in `PERI_APM` tests on ESP32-C5

Closes IDFCI-3274, IDFCI-4807, and IDFCI-4808

See merge request espressif/esp-idf!42937
This commit is contained in:
Laukik Hase
2025-11-06 16:39:09 +05:30
3 changed files with 17 additions and 23 deletions

View File

@@ -252,7 +252,7 @@ _test_panic_handler:
/* Executing the panic handler */
li t0, 0xDEADC0DE
csrr t0, mscratch
csrw mscratch, t0
mv a0, sp
csrr a1, mcause
li t0, VECTORS_MCAUSE_REASON_MASK

View File

@@ -76,35 +76,29 @@ static const uint32_t test_peri_apm_lp_peri_reg[] = {
BIT64(APM_TEE_LP_PERIPH_LP_PERI) | \
BIT64(APM_TEE_LP_PERIPH_LP_APM))
IRAM_ATTR static uint32_t reg_read(uint32_t addr)
FORCE_INLINE_ATTR uint32_t reg_read(uint32_t addr)
{
uint32_t val;
asm volatile (
"li t0, 0x100\n"
"lw %0, 0(%1)\n"
"1:\n"
"nop\n"
"addi t0, t0, -1\n"
"bnez t0, 1b\n"
: "=r"(val)
uint32_t value;
__asm__ volatile (
"lw %0, 0(%1)\n"
"fence\n"
"nop\nnop\nnop\nnop\n"
: "=r"(value)
: "r"(addr)
: "t0", "memory"
: "memory"
);
return val;
return value;
}
IRAM_ATTR static void reg_write(uint32_t addr, uint32_t value)
FORCE_INLINE_ATTR void reg_write(uint32_t addr, uint32_t value)
{
asm volatile (
"li t0, 0x100\n"
"sw %1, 0(%0)\n"
"1:\n"
"nop\n"
"addi t0, t0, -1\n"
"bnez t0, 1b\n"
__asm__ volatile (
"sw %1, 0(%0)\n"
"fence\n"
"nop\nnop\nnop\nnop\n"
:
: "r"(addr), "r"(value)
: "t0", "memory"
: "memory"
);
}

View File

@@ -58,4 +58,4 @@ def test_tee_peri_apm(dut: IdfDut) -> None:
indirect=['config', 'target'],
)
def test_tee_interrupts(dut: IdfDut) -> None:
dut.run_all_single_board_cases()
dut.run_all_single_board_cases(group='CPU')