Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
红岛
rt-thread
提交
a2f20dde
R
rt-thread
项目概览
红岛
/
rt-thread
与 Fork 源项目一致
Fork自
RT-Thread / rt-thread
通知
1
Star
1
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
1
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
R
rt-thread
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
1
Issue
1
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
未验证
提交
a2f20dde
编写于
1月 31, 2018
作者:
B
Bernard Xiong
提交者:
GitHub
1月 31, 2018
浏览文件
操作
浏览文件
下载
差异文件
Merge pull request #1201 from aozima/cortex-m
[libcpu]: fixed #1196 FPU FPCA issue.
上级
c9fe93dc
dd1041bb
变更
6
隐藏空白更改
内联
并排
Showing
6 changed file
with
24 addition
and
24 deletion
+24
-24
libcpu/arm/cortex-m4/context_gcc.S
libcpu/arm/cortex-m4/context_gcc.S
+4
-4
libcpu/arm/cortex-m4/context_iar.S
libcpu/arm/cortex-m4/context_iar.S
+4
-4
libcpu/arm/cortex-m4/context_rvds.S
libcpu/arm/cortex-m4/context_rvds.S
+4
-4
libcpu/arm/cortex-m7/context_gcc.S
libcpu/arm/cortex-m7/context_gcc.S
+4
-4
libcpu/arm/cortex-m7/context_iar.S
libcpu/arm/cortex-m7/context_iar.S
+4
-4
libcpu/arm/cortex-m7/context_rvds.S
libcpu/arm/cortex-m7/context_rvds.S
+4
-4
未找到文件。
libcpu/arm/cortex-m4/context_gcc.S
浏览文件 @
a2f20dde
...
@@ -145,16 +145,16 @@ switch_to_thread:
...
@@ -145,16 +145,16 @@ switch_to_thread:
MSR
psp
,
r1
/*
update
stack
pointer
*/
MSR
psp
,
r1
/*
update
stack
pointer
*/
pendsv_exit
:
/
*
restore
interrupt
*/
MSR
PRIMASK
,
r2
#if defined (__VFP_FP__) && !defined(__SOFTFP__)
#if defined (__VFP_FP__) && !defined(__SOFTFP__)
ORR
lr
,
lr
,
#
0x10
/*
lr
|=
(
1
<<
4
),
clean
FPCA
.
*/
ORR
lr
,
lr
,
#
0x10
/*
lr
|=
(
1
<<
4
),
clean
FPCA
.
*/
CMP
r3
,
#
0
/*
if
(
flag_r3
!=
0
)
*/
CMP
r3
,
#
0
/*
if
(
flag_r3
!=
0
)
*/
BICNE
lr
,
lr
,
#
0x10
/*
lr
&=
~
(
1
<<
4
),
set
FPCA
.
*/
BICNE
lr
,
lr
,
#
0x10
/*
lr
&=
~
(
1
<<
4
),
set
FPCA
.
*/
#endif
#endif
pendsv_exit
:
/
*
restore
interrupt
*/
MSR
PRIMASK
,
r2
ORR
lr
,
lr
,
#
0x04
ORR
lr
,
lr
,
#
0x04
BX
lr
BX
lr
...
...
libcpu/arm/cortex-m4/context_iar.S
浏览文件 @
a2f20dde
...
@@ -149,10 +149,6 @@ skip_pop_fpu
...
@@ -149,10 +149,6 @@ skip_pop_fpu
MSR
psp
,
r1
; update stack pointer
MSR
psp
,
r1
; update stack pointer
pendsv_exit
; restore interrupt
MSR
PRIMASK
,
r2
#if defined ( __ARMVFP__ )
#if defined ( __ARMVFP__ )
ORR
lr
,
lr
,
#
0x10
; lr |= (1 << 4), clean FPCA.
ORR
lr
,
lr
,
#
0x10
; lr |= (1 << 4), clean FPCA.
CBZ
r3
,
return_without_fpu
; if(flag_r3 != 0)
CBZ
r3
,
return_without_fpu
; if(flag_r3 != 0)
...
@@ -160,6 +156,10 @@ pendsv_exit
...
@@ -160,6 +156,10 @@ pendsv_exit
return_without_fpu
return_without_fpu
#endif
#endif
pendsv_exit
; restore interrupt
MSR
PRIMASK
,
r2
ORR
lr
,
lr
,
#
0x04
ORR
lr
,
lr
,
#
0x04
BX
lr
BX
lr
...
...
libcpu/arm/cortex-m4/context_rvds.S
浏览文件 @
a2f20dde
...
@@ -147,16 +147,16 @@ switch_to_thread
...
@@ -147,16 +147,16 @@ switch_to_thread
MSR
psp
,
r1
; update stack pointer
MSR
psp
,
r1
; update stack pointer
pendsv_exit
; restore interrupt
MSR
PRIMASK
,
r2
IF
{FPU}
!=
"SoftVFP"
IF
{FPU}
!=
"SoftVFP"
ORR
lr
,
lr
,
#
0x10
; lr |= (1 << 4), clean FPCA.
ORR
lr
,
lr
,
#
0x10
; lr |= (1 << 4), clean FPCA.
CMP
r3
,
#
0
; if(flag_r3 != 0)
CMP
r3
,
#
0
; if(flag_r3 != 0)
BICNE
lr
,
lr
,
#
0x10
; lr &= ~(1 << 4), set FPCA.
BICNE
lr
,
lr
,
#
0x10
; lr &= ~(1 << 4), set FPCA.
ENDIF
ENDIF
pendsv_exit
; restore interrupt
MSR
PRIMASK
,
r2
ORR
lr
,
lr
,
#
0x04
ORR
lr
,
lr
,
#
0x04
BX
lr
BX
lr
ENDP
ENDP
...
...
libcpu/arm/cortex-m7/context_gcc.S
浏览文件 @
a2f20dde
...
@@ -145,16 +145,16 @@ switch_to_thread:
...
@@ -145,16 +145,16 @@ switch_to_thread:
MSR
psp
,
r1
/*
update
stack
pointer
*/
MSR
psp
,
r1
/*
update
stack
pointer
*/
pendsv_exit
:
/
*
restore
interrupt
*/
MSR
PRIMASK
,
r2
#if defined (__VFP_FP__) && !defined(__SOFTFP__)
#if defined (__VFP_FP__) && !defined(__SOFTFP__)
ORR
lr
,
lr
,
#
0x10
/*
lr
|=
(
1
<<
4
),
clean
FPCA
.
*/
ORR
lr
,
lr
,
#
0x10
/*
lr
|=
(
1
<<
4
),
clean
FPCA
.
*/
CMP
r3
,
#
0
/*
if
(
flag_r3
!=
0
)
*/
CMP
r3
,
#
0
/*
if
(
flag_r3
!=
0
)
*/
BICNE
lr
,
lr
,
#
0x10
/*
lr
&=
~
(
1
<<
4
),
set
FPCA
.
*/
BICNE
lr
,
lr
,
#
0x10
/*
lr
&=
~
(
1
<<
4
),
set
FPCA
.
*/
#endif
#endif
pendsv_exit
:
/
*
restore
interrupt
*/
MSR
PRIMASK
,
r2
ORR
lr
,
lr
,
#
0x04
ORR
lr
,
lr
,
#
0x04
BX
lr
BX
lr
...
...
libcpu/arm/cortex-m7/context_iar.S
浏览文件 @
a2f20dde
...
@@ -149,10 +149,6 @@ skip_pop_fpu
...
@@ -149,10 +149,6 @@ skip_pop_fpu
MSR
psp
,
r1
; update stack pointer
MSR
psp
,
r1
; update stack pointer
pendsv_exit
; restore interrupt
MSR
PRIMASK
,
r2
#if defined ( __ARMVFP__ )
#if defined ( __ARMVFP__ )
ORR
lr
,
lr
,
#
0x10
; lr |= (1 << 4), clean FPCA.
ORR
lr
,
lr
,
#
0x10
; lr |= (1 << 4), clean FPCA.
CBZ
r3
,
return_without_fpu
; if(flag_r3 != 0)
CBZ
r3
,
return_without_fpu
; if(flag_r3 != 0)
...
@@ -160,6 +156,10 @@ pendsv_exit
...
@@ -160,6 +156,10 @@ pendsv_exit
return_without_fpu
return_without_fpu
#endif
#endif
pendsv_exit
; restore interrupt
MSR
PRIMASK
,
r2
ORR
lr
,
lr
,
#
0x04
ORR
lr
,
lr
,
#
0x04
BX
lr
BX
lr
...
...
libcpu/arm/cortex-m7/context_rvds.S
浏览文件 @
a2f20dde
...
@@ -147,16 +147,16 @@ switch_to_thread
...
@@ -147,16 +147,16 @@ switch_to_thread
MSR
psp
,
r1
; update stack pointer
MSR
psp
,
r1
; update stack pointer
pendsv_exit
; restore interrupt
MSR
PRIMASK
,
r2
IF
{FPU}
!=
"SoftVFP"
IF
{FPU}
!=
"SoftVFP"
ORR
lr
,
lr
,
#
0x10
; lr |= (1 << 4), clean FPCA.
ORR
lr
,
lr
,
#
0x10
; lr |= (1 << 4), clean FPCA.
CMP
r3
,
#
0
; if(flag_r3 != 0)
CMP
r3
,
#
0
; if(flag_r3 != 0)
BICNE
lr
,
lr
,
#
0x10
; lr &= ~(1 << 4), set FPCA.
BICNE
lr
,
lr
,
#
0x10
; lr &= ~(1 << 4), set FPCA.
ENDIF
ENDIF
pendsv_exit
; restore interrupt
MSR
PRIMASK
,
r2
ORR
lr
,
lr
,
#
0x04
ORR
lr
,
lr
,
#
0x04
BX
lr
BX
lr
ENDP
ENDP
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录