From c979ca591f943767cc68325b1c039af9b40287f0 Mon Sep 17 00:00:00 2001 From: Graham Sanderson Date: Tue, 4 May 2021 07:43:25 -0500 Subject: [PATCH] disable core 0 SIO FIFO IRQ handler during core 1 launch in case someone has already installed one (#375) --- src/rp2_common/pico_multicore/multicore.c | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/rp2_common/pico_multicore/multicore.c b/src/rp2_common/pico_multicore/multicore.c index 53be1ee..75f9e98 100644 --- a/src/rp2_common/pico_multicore/multicore.c +++ b/src/rp2_common/pico_multicore/multicore.c @@ -129,6 +129,9 @@ void multicore_launch_core1(void (*entry)(void)) { void multicore_launch_core1_raw(void (*entry)(void), uint32_t *sp, uint32_t vector_table) { uint32_t cmd_sequence[] = {0, 0, 1, (uintptr_t) vector_table, (uintptr_t) sp, (uintptr_t) entry}; + bool enabled = irq_is_enabled(SIO_IRQ_PROC0); + irq_set_enabled(SIO_IRQ_PROC0, false); + uint seq = 0; do { uint cmd = cmd_sequence[seq]; @@ -142,6 +145,8 @@ void multicore_launch_core1_raw(void (*entry)(void), uint32_t *sp, uint32_t vect // move to next state on correct response otherwise start over seq = cmd == response ? seq + 1 : 0; } while (seq < count_of(cmd_sequence)); + + irq_set_enabled(SIO_IRQ_PROC0, enabled); } #define LOCKOUT_MAGIC_START 0x73a8831eu