summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorlatercomer <[email protected]>2025-03-16 16:26:21 +0800
committerRbb666 <[email protected]>2025-03-17 16:45:59 +0800
commit130b5ba653871dcf49ce61d21279527f8d3b64eb (patch)
treeba45b837910f2af39bea817a64e047a8cf199f8b
parent9e13f67018d6bd2af6c005974c69571289ad6503 (diff)
解决rt_hw_context_switch_interrupt形参定义不一致
Signed-off-by: latercomer <[email protected]>
-rw-r--r--bsp/simulator/template_vs2012.vcxproj1
-rw-r--r--libcpu/sim/win32/cpu_port.c12
2 files changed, 7 insertions, 6 deletions
diff --git a/bsp/simulator/template_vs2012.vcxproj b/bsp/simulator/template_vs2012.vcxproj
index 914efbc809..610a05b4c4 100644
--- a/bsp/simulator/template_vs2012.vcxproj
+++ b/bsp/simulator/template_vs2012.vcxproj
@@ -45,6 +45,7 @@
<DebugInformationFormat>EditAndContinue</DebugInformationFormat>
<AdditionalOptions>/utf-8 %(AdditionalOptions)</AdditionalOptions>
<LanguageStandard_C>stdc11</LanguageStandard_C>
+ <TreatSpecificWarningsAsErrors>4029</TreatSpecificWarningsAsErrors>
</ClCompile>
<Link>
<AdditionalDependencies>winmm.lib;Packet.lib;wpcap.lib;%(AdditionalDependencies)</AdditionalDependencies>
diff --git a/libcpu/sim/win32/cpu_port.c b/libcpu/sim/win32/cpu_port.c
index 6b7da50bf4..15d0218f03 100644
--- a/libcpu/sim/win32/cpu_port.c
+++ b/libcpu/sim/win32/cpu_port.c
@@ -97,8 +97,9 @@ static MMRESULT OSTick_TimerID;
/*
* flag in interrupt handling
*/
-rt_uint32_t rt_interrupt_from_thread, rt_interrupt_to_thread;
-rt_uint32_t rt_thread_switch_interrupt_flag;
+volatile rt_ubase_t rt_interrupt_from_thread = 0;
+volatile rt_ubase_t rt_interrupt_to_thread = 0;
+volatile rt_uint32_t rt_thread_switch_interrupt_flag = 0;
/*
*********************************************************************************************************
@@ -248,18 +249,17 @@ void rt_hw_interrupt_enable(rt_base_t level)
* Note(s) : none
*********************************************************************************************************
*/
-void rt_hw_context_switch_interrupt(rt_uint32_t from,
- rt_uint32_t to)
+void rt_hw_context_switch_interrupt(rt_ubase_t from, rt_ubase_t to, rt_thread_t from_thread, rt_thread_t to_thread)
{
if(rt_thread_switch_interrupt_flag != 1)
{
rt_thread_switch_interrupt_flag = 1;
// set rt_interrupt_from_thread
- rt_interrupt_from_thread = *((rt_uint32_t *)(from));
+ rt_interrupt_from_thread = from;
}
- rt_interrupt_to_thread = *((rt_uint32_t *)(to));
+ rt_interrupt_to_thread = to;
//trigger YIELD exception(cause context switch)
TriggerSimulateInterrupt(CPU_INTERRUPT_YIELD);