mirror of
https://github.com/ossrs/srs.git
synced 2025-03-09 15:49:59 +00:00
For #2689, Support loongarch, loongson CPU. v5.0.19
This commit is contained in:
parent
a86f3905b2
commit
5b44cc6a17
11 changed files with 3481 additions and 6 deletions
82
trunk/3rdparty/st-srs/md_linux.S
vendored
82
trunk/3rdparty/st-srs/md_linux.S
vendored
|
@ -428,6 +428,88 @@
|
|||
|
||||
/****************************************************************/
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
#elif defined(__loongarch__)
|
||||
|
||||
/****************************************************************/
|
||||
|
||||
/*
|
||||
* Internal __jmp_buf layout
|
||||
*/
|
||||
#define JB_SP 0 /* R3, SP, Stack pointer */
|
||||
#define JB_RA 1 /* R1, RA, Return address */
|
||||
#define JB_FP 2 /* FP/R22 Frame pointer */
|
||||
#define JB_S0 3 /* R23-R31, S0-S8, Subroutine register variable */
|
||||
#define JB_S1 4 /* R23-R31, S0-S8, Subroutine register variable */
|
||||
#define JB_S2 5 /* R23-R31, S0-S8, Subroutine register variable */
|
||||
#define JB_S3 6 /* R23-R31, S0-S8, Subroutine register variable */
|
||||
#define JB_S4 7 /* R23-R31, S0-S8, Subroutine register variable */
|
||||
#define JB_S5 8 /* R23-R31, S0-S8, Subroutine register variable */
|
||||
#define JB_S6 9 /* R23-R31, S0-S8, Subroutine register variable */
|
||||
#define JB_S7 10 /* R23-R31, S0-S8, Subroutine register variable */
|
||||
#define JB_S8 11 /* R23-R31, S0-S8, Subroutine register variable */
|
||||
|
||||
.file "md_linux.S"
|
||||
.text
|
||||
|
||||
/* _st_md_cxt_save(__jmp_buf env) */ /* The env is $r4, https://github.com/ossrs/state-threads/issues/24#porting */
|
||||
.globl _st_md_cxt_save
|
||||
.type _st_md_cxt_save, %function
|
||||
.align 2
|
||||
_st_md_cxt_save:
|
||||
st.d $r3, $r4, 0 /* Save sp to env[0], *(long*)($r4+0) = sp */
|
||||
st.d $r1, $r4, 8 /* Save ra to env[1], *(long*)($r4+8) = r1 */
|
||||
st.d $r22, $r4, 16 /* Save fp to env[2], *(long*)($r4+16) = r22 */
|
||||
st.d $r23, $r4, 24 /* Save r23 to env[3], *(long*)($r4+24) = r23 */
|
||||
st.d $r24, $r4, 32 /* Save r24 to env[4], *(long*)($r4+32) = r24 */
|
||||
st.d $r25, $r4, 40 /* Save r25 to env[5], *(long*)($r4+40) = r25 */
|
||||
st.d $r26, $r4, 48 /* Save r26 to env[6], *(long*)($r4+48) = r26 */
|
||||
st.d $r27, $r4, 56 /* Save r27 to env[7], *(long*)($r4+56) = r27 */
|
||||
st.d $r28, $r4, 64 /* Save r28 to env[8], *(long*)($r4+64) = r28 */
|
||||
st.d $r29, $r4, 72 /* Save r29 to env[9], *(long*)($r4+72) = r29 */
|
||||
st.d $r30, $r4, 80 /* Save r30 to env[10], *(long*)($r4+80) = r30 */
|
||||
st.d $r31, $r4, 88 /* Save r31 to env[11], *(long*)($r4+88) = r31 */
|
||||
addi.w $r12, $r0, 0 /* Set return value to 0 */
|
||||
move $r4, $r12 /* Set return value to 0 */
|
||||
jirl $r0, $r1, 0 /* Return */
|
||||
|
||||
.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.d $r3, $r4, 0 /* Load sp from env[0], sp=*(long*)($r4+0) */
|
||||
ld.d $r1, $r4, 8 /* Load ra from env[1], r1=*(long*)($r4+8) */
|
||||
ld.d $r22, $r4, 16 /* Load fp from env[2], r22=*(long*)($r4+16) */
|
||||
ld.d $r23, $r4, 24 /* Load r23 from env[3], r23=*(long*)($r4+24) */
|
||||
ld.d $r24, $r4, 32 /* Load r24 from env[4], r24=*(long*)($r4+32) */
|
||||
ld.d $r25, $r4, 40 /* Load r25 from env[5], r25=*(long*)($r4+40) */
|
||||
ld.d $r26, $r4, 48 /* Load r26 from env[6], r26=*(long*)($r4+48) */
|
||||
ld.d $r27, $r4, 56 /* Load r27 from env[7], r27=*(long*)($r4+56) */
|
||||
ld.d $r28, $r4, 64 /* Load r28 from env[8], r28=*(long*)($r4+64) */
|
||||
ld.d $r29, $r4, 72 /* Load r29 from env[9], r29=*(long*)($r4+72) */
|
||||
ld.d $r30, $r4, 80 /* Load r30 from env[10], r30=*(long*)($r4+80) */
|
||||
ld.d $r31, $r4, 88 /* Load r31 from env[11], r31=*(long*)($r4+88) */
|
||||
addi.w $r12, $r0, 1 /* Set return value to 1 */
|
||||
move $r4, $r12 /* Set return value to 1 */
|
||||
jirl $r0, $r1, 0 /* Return to the saved return address */
|
||||
|
||||
.size _st_md_cxt_restore, .-_st_md_cxt_restore
|
||||
|
||||
/****************************************************************/
|
||||
|
||||
#endif
|
||||
|
||||
#endif
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue