1diff --git a/src/common/pico_sync/sem.c b/src/common/pico_sync/sem.c
2index 9044817..8fc4458 100644
3--- a/src/common/pico_sync/sem.c
4+++ b/src/common/pico_sync/sem.c
5@@ -15,7 +15,7 @@ void sem_init(semaphore_t *sem, int16_t initial_permits, int16_t max_permits) {
6 }
7
8 int __time_critical_func(sem_available)(semaphore_t *sem) {
9-#ifdef __GNUC__
10+#if defined(__GNUC__) && !defined(__STRICT_ANSI__)
11     return *(volatile typeof(sem->permits) *) &sem->permits;
12 #else
13     static_assert(sizeof(sem->permits) == 2, "");
14diff --git a/src/rp2_common/pico_bootrom/CMakeLists.txt b/src/rp2_common/pico_bootrom/CMakeLists.txt
15index 0648098..93a52ea 100644
16--- a/src/rp2_common/pico_bootrom/CMakeLists.txt
17+++ b/src/rp2_common/pico_bootrom/CMakeLists.txt
18@@ -8,5 +8,5 @@ target_sources(pico_bootrom INTERFACE
19         ${CMAKE_CURRENT_LIST_DIR}/bootrom_lock.c
20         )
21
22-target_link_libraries(pico_bootrom_headers INTERFACE boot_picoboot_headers)
23+target_link_libraries(pico_bootrom_headers INTERFACE boot_picoboot_headers boot_picobin_headers)
24 pico_mirrored_target_link_libraries(pico_bootrom INTERFACE pico_base hardware_boot_lock)
25diff --git a/src/rp2_common/pico_multicore/multicore.c b/src/rp2_common/pico_multicore/multicore.c
26index 58c2ee2..6ec689f 100644
27--- a/src/rp2_common/pico_multicore/multicore.c
28+++ b/src/rp2_common/pico_multicore/multicore.c
29@@ -100,8 +100,8 @@ int core1_wrapper(int (*entry)(void), void *stack_base) {
30 void multicore_reset_core1(void) {
31     // Use atomic aliases just in case core 1 is also manipulating some PSM state
32     io_rw_32 *power_off = (io_rw_32 *) (PSM_BASE + PSM_FRCE_OFF_OFFSET);
33-    io_rw_32 *power_off_set = hw_set_alias(power_off);
34-    io_rw_32 *power_off_clr = hw_clear_alias(power_off);
35+    io_rw_32 *power_off_set = hw_set_alias_untyped(power_off);
36+    io_rw_32 *power_off_clr = hw_clear_alias_untyped(power_off);
37
38     // Hard-reset core 1.
39     // Reading back confirms the core 1 reset is in the correct state, but also
40