【赛昉科技昉·星光RISC-V单板计算机试用体验】在starfive下面测试跑一下setjmp和longjmp用于statethread

描述

本文来源电子发烧友社区,作者:jf_06445065, 帖子地址:https://bbs.elecfans.com/jishu_2293504_1_1.html

因为starfive是riscv的指令集,所以也就需要了解一下寄存器和常用的指令。
主要是参考这里:https://en.wikipedia.org/wiki/RISC-V

主要就这么一个表格。

但是在srs的statethread里面sp被移动了一个位置,便于修改,所以稍微修改一下位置即可:

.file "md_linux.S"
.text


/* _st_md_cxt_save(__jmp_buf env) */ /* The env is $a0, https://en.wikipedia.org/wiki/MIPS_architecture#Calling_conventions */
.globl _st_md_cxt_save
.type _st_md_cxt_save, %function
.align 2
_st_md_cxt_save:
sd    sp,0(a0)
sd    ra,8(a0)
sd    s0,16(a0)
sd    s1,24(a0)
sd    s2,32(a0)
sd    s3,40(a0)
sd    s4,48(a0)
sd    s5,56(a0)
sd    s6,64(a0)
sd    s7,72(a0)
sd    s8,80(a0)
sd    s9,88(a0)
sd    s10,96(a0)
sd    s11,104(a0)
li    a0,0
jr ra
.size _st_md_cxt_save, .-_st_md_cxt_save

/****************************************************************/

/* _st_md_cxt_restore(__jmp_buf env, int val) */
.globl _st_md_cxt_restore
.type _st_md_cxt_restore, %function
.align 2

_st_md_cxt_restore:
ld        sp,0(a0)
ld        ra,8(a0)
ld        s0,16(a0)
ld        s1,24(a0)
ld        s2,32(a0)
ld        s3,40(a0)
ld        s4,48(a0)
ld        s5,56(a0)
ld        s6,64(a0)
ld        s7,72(a0)
ld        s8,80(a0)
ld        s9,88(a0)
ld        s10,96(a0)
ld        s11,104(a0)
li a0,1
jr ra
.size _st_md_cxt_restore, .-_st_md_cxt_restore

然后就放到srs目录里面就可以编译SRS跑功能强大的流媒体直播服务器了,甚至支持WebRTC。

不过starfive提供的fedora在编译环境方面好像略有些别扭,不过也还勉强可以用:

[riscv@fedora-starfive helloworld]$ g++ -dM -E - null | grep riscv
#define __riscv 1
#define __riscv_atomic 1
#define __riscv_cmodel_medlow 1
#define __riscv_fdiv 1
#define __riscv_float_abi_double 1
#define __riscv_mul 1
#define __riscv_muldiv 1
#define __riscv_xlen 64
#define __riscv_fsqrt 1
#define __riscv_compressed 1
#define __riscv_flen 64
#define __riscv_div 1
[riscv@fedora-starfive helloworld]$

后来我是用__riscv来做环境分析的,然后不影响其他平台编译兼容了。

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分