31
31
#include "arm_internal.h"
32
32
33
33
#include "stm32_dualcore.h"
34
- #include "stm32_hsem.h"
35
34
36
35
/****************************************************************************
37
36
* Pre-processor Definitions
@@ -77,6 +76,16 @@ static bool stm32_cm4_boot(void)
77
76
#endif
78
77
79
78
#ifdef CONFIG_ARCH_CHIP_STM32H7_CORTEXM4
79
+
80
+ /****************************************************************************
81
+ * Name: stm32_cm4_busywait_lock_sem
82
+ ****************************************************************************/
83
+
84
+ void stm32_cm4_busywait_lock_sem (uint8_t id )
85
+ {
86
+ while ((getreg32 (STM32_HSEM_RX (id )) & HSEM_SEMX_LOCK ) == 0 );
87
+ }
88
+
80
89
/****************************************************************************
81
90
* Name: stm32_cpu2sem_wait
82
91
****************************************************************************/
@@ -89,13 +98,23 @@ static void stm32_cpu2sem_wait(void)
89
98
90
99
/* Wait for CPU1 */
91
100
92
- stm32_hsem_busywait_lock (CPU2_HOLD_HSEM );
101
+ stm32_cm4_busywait_lock_sem (CPU2_HOLD_HSEM );
93
102
}
94
103
#endif
95
104
96
105
#if defined(CONFIG_ARCH_CHIP_STM32H7_CORTEXM7 ) && \
97
106
defined(CONFIG_STM32H7_CORTEXM4_ENABLED )
98
107
108
+ /****************************************************************************
109
+ * Name: stm32_cm7_take_sem
110
+ ****************************************************************************/
111
+
112
+ static bool stm32_cm7_take_sem (uint8_t id )
113
+ {
114
+ return (getreg32 (STM32_HSEM_RLRX (id )) ==
115
+ ((HSEM_COREID_CPU1 << HSEM_SEMX_COREID_SHIFT ) | HSEM_SEMX_LOCK ));
116
+ }
117
+
99
118
/****************************************************************************
100
119
* Name: stm32_cpu2sem_take
101
120
****************************************************************************/
@@ -104,7 +123,7 @@ static void stm32_cpu2sem_take(void)
104
123
{
105
124
/* Take semaphore */
106
125
107
- while (stm32_hsem_take (CPU2_HOLD_HSEM ) == 0 );
126
+ while (stm32_cm7_take_sem (CPU2_HOLD_HSEM ) == 0 );
108
127
}
109
128
#endif
110
129
0 commit comments