Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
Mozi
rt-thread
提交
a74a2a25
R
rt-thread
项目概览
Mozi
/
rt-thread
与 Fork 源项目一致
Fork自
RT-Thread / rt-thread
通知
0
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
R
rt-thread
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
a74a2a25
编写于
2月 06, 2017
作者:
山河
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Add libcpu/arm/am335x/context_iar.S file
上级
a7c4a23c
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
96 addition
and
0 deletion
+96
-0
libcpu/arm/am335x/context_iar.S
libcpu/arm/am335x/context_iar.S
+96
-0
未找到文件。
libcpu/arm/am335x/context_iar.S
0 → 100644
浏览文件 @
a74a2a25
;/*
; * File : context_iar.S
; * This file is part of RT-Thread RTOS
; * COPYRIGHT (C) 2006, RT-Thread Development Team
; *
; * This program is free software; you can redistribute it and/or modify
; * it under the terms of the GNU General Public License as published by
; * the Free Software Foundation; either version 2 of the License, or
; * (at your option) any later version.
; *
; * This program is distributed in the hope that it will be useful,
; * but WITHOUT ANY WARRANTY; without even the implied warranty of
; * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
; * GNU General Public License for more details.
; *
; * You should have received a copy of the GNU General Public License along
; * with this program; if not, write to the Free Software Foundation, Inc.,
; * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
; *
; * Change Logs:
; * Date Author Notes
; * 2011-08-14 weety copy from mini2440
; * 2015-04-15 ArdaFu convert from context_gcc.s
; */
#define NOINT 0xc0
SECTION
.
text
:
CODE
(
6
)
/*
*
rt_base_t
rt_hw_interrupt_disable
()
;
*/
PUBLIC
rt_hw_interrupt_disable
rt_hw_interrupt_disable
:
MRS
R0
,
CPSR
ORR
R1
,
R0
,
#
NOINT
MSR
CPSR_C
,
R1
MOV
PC
,
LR
/*
*
void
rt_hw_interrupt_enable
(
rt_base_t
level
)
;
*/
PUBLIC
rt_hw_interrupt_enable
rt_hw_interrupt_enable
:
MSR
CPSR_CXSF
,
R0
MOV
PC
,
LR
/*
*
void
rt_hw_context_switch
(
rt_uint32
from
,
rt_uint32
to
)
;
*
r0
-->
from
*
r1
-->
to
*/
PUBLIC
rt_hw_context_switch
rt_hw_context_switch
:
STMFD
SP
!,
{
LR
}
; push pc (lr should be pushed in place of PC)
STMFD
SP
!,
{
R0
-
R12
,
LR
}
; push lr & register file
MRS
R4
,
CPSR
STMFD
SP
!,
{
R4
}
; push cpsr
STR
SP
,
[
R0
]
; store sp in preempted tasks TCB
LDR
SP
,
[
R1
]
; get new task stack pointer
LDMFD
SP
!,
{
R4
}
; pop new task spsr
MSR
SPSR_cxsf
,
R4
LDMFD
SP
!,
{
R0
-
R12
,
LR
,
PC
}^
; pop new task r0-r12, lr & pc
/*
*
void
rt_hw_context_switch_to
(
rt_uint32
to
)
;
*
r0
-->
to
*/
PUBLIC
rt_hw_context_switch_to
rt_hw_context_switch_to
:
LDR
SP
,
[
R0
]
; get new task stack pointer
LDMFD
SP
!,
{
R4
}
; pop new task spsr
MSR
SPSR_cxsf
,
R4
LDMFD
SP
!,
{
R0
-
R12
,
LR
,
PC
}^
; pop new task r0-r12, lr & pc
/*
*
void
rt_hw_context_switch_interrupt
(
rt_uint32
from
,
rt_uint32
to
)
;
*/
IMPORT
rt_thread_switch_interrupt_flag
IMPORT
rt_interrupt_from_thread
IMPORT
rt_interrupt_to_thread
PUBLIC
rt_hw_context_switch_interrupt
rt_hw_context_switch_interrupt
:
LDR
R2
,
=
rt_thread_switch_interrupt_flag
LDR
R3
,
[
R2
]
CMP
R3
,
#
1
BEQ
_reswitch
MOV
R3
,
#
1
; set flag to 1
STR
R3
,
[
R2
]
LDR
R2
,
=
rt_interrupt_from_thread
; set rt_interrupt_from_thread
STR
R0
,
[
R2
]
_reswitch
:
LDR
R2
,
=
rt_interrupt_to_thread
; set rt_interrupt_to_thread
STR
R1
,
[
R2
]
MOV
PC
,
LR
END
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录