Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
天中雨水
rt-thread
提交
c8deffcf
R
rt-thread
项目概览
天中雨水
/
rt-thread
该项目与 Fork 源项目分叉
Fork自
RT-Thread / rt-thread
通知
2
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,发现更多精彩内容 >>
提交
c8deffcf
编写于
11月 20, 2020
作者:
T
tangweikang
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
[libcpu/risc-v][K210] add FPU support
上级
9dc0bbb8
变更
5
隐藏空白更改
内联
并排
Showing
5 changed file
with
173 addition
and
1 deletion
+173
-1
libcpu/Kconfig
libcpu/Kconfig
+8
-0
libcpu/risc-v/common/context_gcc.S
libcpu/risc-v/common/context_gcc.S
+77
-1
libcpu/risc-v/common/cpuport.c
libcpu/risc-v/common/cpuport.c
+35
-0
libcpu/risc-v/common/cpuport.h
libcpu/risc-v/common/cpuport.h
+16
-0
libcpu/risc-v/k210/interrupt_gcc.S
libcpu/risc-v/k210/interrupt_gcc.S
+37
-0
未找到文件。
libcpu/Kconfig
浏览文件 @
c8deffcf
...
...
@@ -106,6 +106,14 @@ config ARCH_RISCV
config ARCH_RISCV_FPU
bool
config ARCH_RISCV_FPU_S
select ARCH_RISCV_FPU
bool
config ARCH_RISCV_FPU_D
select ARCH_RISCV_FPU
bool
config ARCH_RISCV32
select ARCH_RISCV
bool
...
...
libcpu/risc-v/common/context_gcc.S
浏览文件 @
c8deffcf
...
...
@@ -7,6 +7,7 @@
*
Date
Author
Notes
*
2018
/
10
/
28
Bernard
The
unify
RISC
-
V
porting
implementation
*
2018
/
12
/
27
Jesven
Add
SMP
support
*
2020
/
11
/
20
BalanceTWK
Add
FPU
support
*/
#include "cpuport.h"
...
...
@@ -72,6 +73,43 @@ rt_hw_context_switch:
*
mstatus
.
mie
->
sp
(
2
)
*
x
(
i
)
->
sp
(
i
-
4
)
*/
#ifdef ARCH_RISCV_FPU
addi
sp
,
sp
,
-
32
*
FREGBYTES
FSTORE
f0
,
0
*
FREGBYTES
(
sp
)
FSTORE
f1
,
1
*
FREGBYTES
(
sp
)
FSTORE
f2
,
2
*
FREGBYTES
(
sp
)
FSTORE
f3
,
3
*
FREGBYTES
(
sp
)
FSTORE
f4
,
4
*
FREGBYTES
(
sp
)
FSTORE
f5
,
5
*
FREGBYTES
(
sp
)
FSTORE
f6
,
6
*
FREGBYTES
(
sp
)
FSTORE
f7
,
7
*
FREGBYTES
(
sp
)
FSTORE
f8
,
8
*
FREGBYTES
(
sp
)
FSTORE
f9
,
9
*
FREGBYTES
(
sp
)
FSTORE
f10
,
10
*
FREGBYTES
(
sp
)
FSTORE
f11
,
11
*
FREGBYTES
(
sp
)
FSTORE
f12
,
12
*
FREGBYTES
(
sp
)
FSTORE
f13
,
13
*
FREGBYTES
(
sp
)
FSTORE
f14
,
14
*
FREGBYTES
(
sp
)
FSTORE
f15
,
15
*
FREGBYTES
(
sp
)
FSTORE
f16
,
16
*
FREGBYTES
(
sp
)
FSTORE
f17
,
17
*
FREGBYTES
(
sp
)
FSTORE
f18
,
18
*
FREGBYTES
(
sp
)
FSTORE
f19
,
19
*
FREGBYTES
(
sp
)
FSTORE
f20
,
20
*
FREGBYTES
(
sp
)
FSTORE
f21
,
21
*
FREGBYTES
(
sp
)
FSTORE
f22
,
22
*
FREGBYTES
(
sp
)
FSTORE
f23
,
23
*
FREGBYTES
(
sp
)
FSTORE
f24
,
24
*
FREGBYTES
(
sp
)
FSTORE
f25
,
25
*
FREGBYTES
(
sp
)
FSTORE
f26
,
26
*
FREGBYTES
(
sp
)
FSTORE
f27
,
27
*
FREGBYTES
(
sp
)
FSTORE
f28
,
28
*
FREGBYTES
(
sp
)
FSTORE
f29
,
29
*
FREGBYTES
(
sp
)
FSTORE
f30
,
30
*
FREGBYTES
(
sp
)
FSTORE
f31
,
31
*
FREGBYTES
(
sp
)
#endif
addi
sp
,
sp
,
-
32
*
REGBYTES
STORE
sp
,
(
a0
)
...
...
@@ -174,7 +212,7 @@ rt_hw_context_switch_exit:
LOAD
x1
,
1
*
REGBYTES
(
sp
)
li
t0
,
0x0000
1
800
li
t0
,
0x0000
7
800
csrw
mstatus
,
t0
LOAD
a0
,
2
*
REGBYTES
(
sp
)
csrs
mstatus
,
a0
...
...
@@ -209,4 +247,42 @@ rt_hw_context_switch_exit:
LOAD
x31
,
31
*
REGBYTES
(
sp
)
addi
sp
,
sp
,
32
*
REGBYTES
#ifdef ARCH_RISCV_FPU
FLOAD
f0
,
0
*
FREGBYTES
(
sp
)
FLOAD
f1
,
1
*
FREGBYTES
(
sp
)
FLOAD
f2
,
2
*
FREGBYTES
(
sp
)
FLOAD
f3
,
3
*
FREGBYTES
(
sp
)
FLOAD
f4
,
4
*
FREGBYTES
(
sp
)
FLOAD
f5
,
5
*
FREGBYTES
(
sp
)
FLOAD
f6
,
6
*
FREGBYTES
(
sp
)
FLOAD
f7
,
7
*
FREGBYTES
(
sp
)
FLOAD
f8
,
8
*
FREGBYTES
(
sp
)
FLOAD
f9
,
9
*
FREGBYTES
(
sp
)
FLOAD
f10
,
10
*
FREGBYTES
(
sp
)
FLOAD
f11
,
11
*
FREGBYTES
(
sp
)
FLOAD
f12
,
12
*
FREGBYTES
(
sp
)
FLOAD
f13
,
13
*
FREGBYTES
(
sp
)
FLOAD
f14
,
14
*
FREGBYTES
(
sp
)
FLOAD
f15
,
15
*
FREGBYTES
(
sp
)
FLOAD
f16
,
16
*
FREGBYTES
(
sp
)
FLOAD
f17
,
17
*
FREGBYTES
(
sp
)
FLOAD
f18
,
18
*
FREGBYTES
(
sp
)
FLOAD
f19
,
19
*
FREGBYTES
(
sp
)
FLOAD
f20
,
20
*
FREGBYTES
(
sp
)
FLOAD
f21
,
21
*
FREGBYTES
(
sp
)
FLOAD
f22
,
22
*
FREGBYTES
(
sp
)
FLOAD
f23
,
23
*
FREGBYTES
(
sp
)
FLOAD
f24
,
24
*
FREGBYTES
(
sp
)
FLOAD
f25
,
25
*
FREGBYTES
(
sp
)
FLOAD
f26
,
26
*
FREGBYTES
(
sp
)
FLOAD
f27
,
27
*
FREGBYTES
(
sp
)
FLOAD
f28
,
28
*
FREGBYTES
(
sp
)
FLOAD
f29
,
29
*
FREGBYTES
(
sp
)
FLOAD
f30
,
30
*
FREGBYTES
(
sp
)
FLOAD
f31
,
31
*
FREGBYTES
(
sp
)
addi
sp
,
sp
,
32
*
FREGBYTES
#endif
mret
libcpu/risc-v/common/cpuport.c
浏览文件 @
c8deffcf
...
...
@@ -6,6 +6,7 @@
* Change Logs:
* Date Author Notes
* 2018/10/28 Bernard The unify RISC-V porting code.
* 2020/11/20 BalanceTWK Add FPU support
*/
#include <rthw.h>
...
...
@@ -53,6 +54,40 @@ struct rt_hw_stack_frame
rt_ubase_t
t4
;
/* x29 - t4 - temporary register 4 */
rt_ubase_t
t5
;
/* x30 - t5 - temporary register 5 */
rt_ubase_t
t6
;
/* x31 - t6 - temporary register 6 */
#ifdef ARCH_RISCV_FPU
rv_floatreg_t
f0
;
/* f0 */
rv_floatreg_t
f1
;
/* f1 */
rv_floatreg_t
f2
;
/* f2 */
rv_floatreg_t
f3
;
/* f3 */
rv_floatreg_t
f4
;
/* f4 */
rv_floatreg_t
f5
;
/* f5 */
rv_floatreg_t
f6
;
/* f6 */
rv_floatreg_t
f7
;
/* f7 */
rv_floatreg_t
f8
;
/* f8 */
rv_floatreg_t
f9
;
/* f9 */
rv_floatreg_t
f10
;
/* f10 */
rv_floatreg_t
f11
;
/* f11 */
rv_floatreg_t
f12
;
/* f12 */
rv_floatreg_t
f13
;
/* f13 */
rv_floatreg_t
f14
;
/* f14 */
rv_floatreg_t
f15
;
/* f15 */
rv_floatreg_t
f16
;
/* f16 */
rv_floatreg_t
f17
;
/* f17 */
rv_floatreg_t
f18
;
/* f18 */
rv_floatreg_t
f19
;
/* f19 */
rv_floatreg_t
f20
;
/* f20 */
rv_floatreg_t
f21
;
/* f21 */
rv_floatreg_t
f22
;
/* f22 */
rv_floatreg_t
f23
;
/* f23 */
rv_floatreg_t
f24
;
/* f24 */
rv_floatreg_t
f25
;
/* f25 */
rv_floatreg_t
f26
;
/* f26 */
rv_floatreg_t
f27
;
/* f27 */
rv_floatreg_t
f28
;
/* f28 */
rv_floatreg_t
f29
;
/* f29 */
rv_floatreg_t
f30
;
/* f30 */
rv_floatreg_t
f31
;
/* f31 */
#endif
};
/**
...
...
libcpu/risc-v/common/cpuport.h
浏览文件 @
c8deffcf
...
...
@@ -6,6 +6,7 @@
* Change Logs:
* Date Author Notes
* 2018-10-03 Bernard The first version
* 2020/11/20 BalanceTWK Add FPU support
*/
#ifndef CPUPORT_H__
...
...
@@ -24,4 +25,19 @@
#define REGBYTES 4
#endif
#ifdef ARCH_RISCV_FPU
#ifdef ARCH_RISCV_FPU_D
#define FSTORE fsd
#define FLOAD fld
#define FREGBYTES 8
#define rv_floatreg_t rt_int64_t
#endif
#ifdef ARCH_RISCV_FPU_S
#define FSTORE fsw
#define FLOAD flw
#define FREGBYTES 4
#define rv_floatreg_t rt_int32_t
#endif
#endif
#endif
libcpu/risc-v/k210/interrupt_gcc.S
浏览文件 @
c8deffcf
...
...
@@ -15,6 +15,43 @@
.
align
2
.
global
trap_entry
trap_entry
:
#ifdef ARCH_RISCV_FPU
addi
sp
,
sp
,
-
32
*
FREGBYTES
FSTORE
f0
,
0
*
FREGBYTES
(
sp
)
FSTORE
f1
,
1
*
FREGBYTES
(
sp
)
FSTORE
f2
,
2
*
FREGBYTES
(
sp
)
FSTORE
f3
,
3
*
FREGBYTES
(
sp
)
FSTORE
f4
,
4
*
FREGBYTES
(
sp
)
FSTORE
f5
,
5
*
FREGBYTES
(
sp
)
FSTORE
f6
,
6
*
FREGBYTES
(
sp
)
FSTORE
f7
,
7
*
FREGBYTES
(
sp
)
FSTORE
f8
,
8
*
FREGBYTES
(
sp
)
FSTORE
f9
,
9
*
FREGBYTES
(
sp
)
FSTORE
f10
,
10
*
FREGBYTES
(
sp
)
FSTORE
f11
,
11
*
FREGBYTES
(
sp
)
FSTORE
f12
,
12
*
FREGBYTES
(
sp
)
FSTORE
f13
,
13
*
FREGBYTES
(
sp
)
FSTORE
f14
,
14
*
FREGBYTES
(
sp
)
FSTORE
f15
,
15
*
FREGBYTES
(
sp
)
FSTORE
f16
,
16
*
FREGBYTES
(
sp
)
FSTORE
f17
,
17
*
FREGBYTES
(
sp
)
FSTORE
f18
,
18
*
FREGBYTES
(
sp
)
FSTORE
f19
,
19
*
FREGBYTES
(
sp
)
FSTORE
f20
,
20
*
FREGBYTES
(
sp
)
FSTORE
f21
,
21
*
FREGBYTES
(
sp
)
FSTORE
f22
,
22
*
FREGBYTES
(
sp
)
FSTORE
f23
,
23
*
FREGBYTES
(
sp
)
FSTORE
f24
,
24
*
FREGBYTES
(
sp
)
FSTORE
f25
,
25
*
FREGBYTES
(
sp
)
FSTORE
f26
,
26
*
FREGBYTES
(
sp
)
FSTORE
f27
,
27
*
FREGBYTES
(
sp
)
FSTORE
f28
,
28
*
FREGBYTES
(
sp
)
FSTORE
f29
,
29
*
FREGBYTES
(
sp
)
FSTORE
f30
,
30
*
FREGBYTES
(
sp
)
FSTORE
f31
,
31
*
FREGBYTES
(
sp
)
#endif
/
*
save
thread
context
to
thread
stack
*/
addi
sp
,
sp
,
-
32
*
REGBYTES
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录