|
@@ -1,5 +1,5 @@
|
|
|
/*
|
|
/*
|
|
|
- * Copyright (c) 2006-2018, RT-Thread Development Team
|
|
|
|
|
|
|
+ * Copyright (c) 2006-2026, RT-Thread Development Team
|
|
|
*
|
|
*
|
|
|
* SPDX-License-Identifier: Apache-2.0
|
|
* SPDX-License-Identifier: Apache-2.0
|
|
|
*
|
|
*
|
|
@@ -10,6 +10,7 @@
|
|
|
* 2013-06-18 aozima add restore MSP feature.
|
|
* 2013-06-18 aozima add restore MSP feature.
|
|
|
* 2013-06-23 aozima support lazy stack optimized.
|
|
* 2013-06-23 aozima support lazy stack optimized.
|
|
|
* 2018-07-24 aozima enhancement hard fault exception handler.
|
|
* 2018-07-24 aozima enhancement hard fault exception handler.
|
|
|
|
|
+ * 2026-05-19 Evlers allows rewrite to interrupt enable/disable api to support independent interrupts management
|
|
|
*/
|
|
*/
|
|
|
|
|
|
|
|
/**
|
|
/**
|
|
@@ -34,6 +35,7 @@
|
|
|
* rt_base_t rt_hw_interrupt_disable();
|
|
* rt_base_t rt_hw_interrupt_disable();
|
|
|
*/
|
|
*/
|
|
|
.global rt_hw_interrupt_disable
|
|
.global rt_hw_interrupt_disable
|
|
|
|
|
+.weak rt_hw_interrupt_disable
|
|
|
.type rt_hw_interrupt_disable, %function
|
|
.type rt_hw_interrupt_disable, %function
|
|
|
rt_hw_interrupt_disable:
|
|
rt_hw_interrupt_disable:
|
|
|
MRS r0, PRIMASK
|
|
MRS r0, PRIMASK
|
|
@@ -44,6 +46,7 @@ rt_hw_interrupt_disable:
|
|
|
* void rt_hw_interrupt_enable(rt_base_t level);
|
|
* void rt_hw_interrupt_enable(rt_base_t level);
|
|
|
*/
|
|
*/
|
|
|
.global rt_hw_interrupt_enable
|
|
.global rt_hw_interrupt_enable
|
|
|
|
|
+.weak rt_hw_interrupt_enable
|
|
|
.type rt_hw_interrupt_enable, %function
|
|
.type rt_hw_interrupt_enable, %function
|
|
|
rt_hw_interrupt_enable:
|
|
rt_hw_interrupt_enable:
|
|
|
MSR PRIMASK, r0
|
|
MSR PRIMASK, r0
|
|
@@ -258,6 +261,10 @@ rt_hw_context_switch_to:
|
|
|
CPSIE F
|
|
CPSIE F
|
|
|
CPSIE I
|
|
CPSIE I
|
|
|
|
|
|
|
|
|
|
+ /* clear the BASEPRI register to disable masking priority */
|
|
|
|
|
+ MOV r0, #0x00
|
|
|
|
|
+ MSR BASEPRI, r0
|
|
|
|
|
+
|
|
|
/* ensure PendSV exception taken place before subsequent operation */
|
|
/* ensure PendSV exception taken place before subsequent operation */
|
|
|
DSB
|
|
DSB
|
|
|
ISB
|
|
ISB
|