Skip to content

Commit 439af33

Browse files
Saiiijchanwangfei_chenaggarg
authored
riscv: refine vector context layout on stack (#1329)
Vector general register layout: Before: +--------------+ <-- High Address | v7 | +--------------+ | v6 | +--------------+ | ... | +--------------+ | v0 | +--------------+ <-- v0 - v7 | v15 | +--------------+ | v14 | +--------------+ | ... | +--------------+ | v8 | +--------------+ <-- v8 - v15 | ... | +--------------+ | v24 | +--------------+ <-- Low address After: +--------------+ <-- High Address | v31 | +--------------+ | v30 | +--------------+ | ... | +--------------+ | v1 | +--------------+ | v0 | +--------------+ <-- Low Address Signed-off-by: wangfei_chen <[email protected]> Co-authored-by: wangfei_chen <[email protected]> Co-authored-by: Gaurav-Aggarwal-AWS <[email protected]>
1 parent c8d31dd commit 439af33

File tree

1 file changed

+8
-8
lines changed

1 file changed

+8
-8
lines changed

portable/GCC/RISC-V/portContext.h

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -214,13 +214,13 @@ neg t0, t0
214214

215215
/* Store the vector registers in group of 8. */
216216
add sp, sp, t0
217-
vs8r.v v0, (sp) /* Store v0-v7. */
218-
add sp, sp, t0
219-
vs8r.v v8, (sp) /* Store v8-v15. */
217+
vs8r.v v24, (sp) /* Store v24-v31. */
220218
add sp, sp, t0
221219
vs8r.v v16, (sp) /* Store v16-v23. */
222220
add sp, sp, t0
223-
vs8r.v v24, (sp) /* Store v24-v31. */
221+
vs8r.v v8, (sp) /* Store v8-v15. */
222+
add sp, sp, t0
223+
vs8r.v v0, (sp) /* Store v0-v7. */
224224

225225
/* Store the VPU CSRs. */
226226
addi sp, sp, -( 4 * portWORD_SIZE )
@@ -256,13 +256,13 @@ csrr t0, vlenb /* t0 = vlenb. vlenb is the length of each vector register in byt
256256
slli t0, t0, 3 /* t0 = vlenb * 8. t0 now contains the space required to store 8 vector registers. */
257257

258258
/* Restore the vector registers. */
259-
vl8r.v v24, (sp)
259+
vl8r.v v0, (sp) /* Restore v0-v7. */
260260
add sp, sp, t0
261-
vl8r.v v16, (sp)
261+
vl8r.v v8, (sp) /* Restore v8-v15. */
262262
add sp, sp, t0
263-
vl8r.v v8, (sp)
263+
vl8r.v v16, (sp) /* Restore v16-v23. */
264264
add sp, sp, t0
265-
vl8r.v v0, (sp)
265+
vl8r.v v24, (sp) /* Restore v23-v31. */
266266
add sp, sp, t0
267267

268268
/* Re-reserve the space for mstatus and epc. */

0 commit comments

Comments
 (0)