summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorwangqinglin <[email protected]>2023-06-05 16:43:31 +0800
committerguo <[email protected]>2023-06-11 07:08:53 +0800
commit0c29bed30f81f79f3265813b186d1091e4411dc4 (patch)
treed043e5881e8e6ff1f57a62668690459e97ba8eaa
parent09ea44a37017f02ddf3e5b4a4ad765fbf5fd7954 (diff)
内核Kconfig增加AMP选项, api:rt_hw_cpu_id和 RT_USING_SMP宏解耦,增加rt_hw_ipi_send对RT_USING_AMP的依赖
-rw-r--r--include/rthw.h16
-rw-r--r--src/Kconfig18
2 files changed, 26 insertions, 8 deletions
diff --git a/include/rthw.h b/include/rthw.h
index 0fe01f3073..21b28072ce 100644
--- a/include/rthw.h
+++ b/include/rthw.h
@@ -160,6 +160,15 @@ void rt_hw_exception_install(rt_err_t (*exception_handle)(void *context));
*/
void rt_hw_us_delay(rt_uint32_t us);
+int rt_hw_cpu_id(void);
+
+#if defined(RT_USING_SMP) || defined(RT_USING_AMP)
+/**
+ * ipi function
+ */
+void rt_hw_ipi_send(int ipi_vector, unsigned int cpu_mask);
+#endif
+
#ifdef RT_USING_SMP
#include <cpuport.h> /* for spinlock from arch */
@@ -172,8 +181,6 @@ void rt_hw_spin_lock_init(rt_hw_spinlock_t *lock);
void rt_hw_spin_lock(rt_hw_spinlock_t *lock);
void rt_hw_spin_unlock(rt_hw_spinlock_t *lock);
-int rt_hw_cpu_id(void);
-
extern rt_hw_spinlock_t _cpus_lock;
extern rt_hw_spinlock_t _rt_critical_lock;
@@ -186,11 +193,6 @@ extern rt_hw_spinlock_t _rt_critical_lock;
#define RT_DECLARE_SPINLOCK(x)
/**
- * ipi function
- */
-void rt_hw_ipi_send(int ipi_vector, unsigned int cpu_mask);
-
-/**
* boot secondary cpu
*/
void rt_hw_secondary_cpu_up(void);
diff --git a/src/Kconfig b/src/Kconfig
index 4a4b06413a..2cc250de38 100644
--- a/src/Kconfig
+++ b/src/Kconfig
@@ -38,6 +38,22 @@ config RT_USING_SMART
help
RT-Thread Smart is a microkernel based operating system on RT-Thread.
+config RT_USING_AMP
+ bool "Enable AMP(Asymmetric Multi-Processing)"
+ default n
+ if RT_USING_AMP
+ choice
+ prompt "Select the AMP role"
+ default RT_AMP_SLAVE
+
+ config RT_AMP_MASTER
+ bool "amp role MASTER"
+
+ config RT_AMP_SLAVE
+ bool "amp role SLAVE"
+ endchoice
+ endif
+
config RT_USING_SMP
bool "Enable SMP(Symmetric multiprocessing)"
default n
@@ -50,7 +66,7 @@ config RT_USING_SMP
config RT_CPUS_NR
int "Number of CPUs"
default 2
- depends on RT_USING_SMP
+ depends on RT_USING_SMP || RT_USING_AMP
help
Number of CPUs in the system