2021-06-06 22:20:49 +09:00
|
|
|
/*
|
|
|
|
* Copyright 2021, Haiku, Inc.
|
|
|
|
* Distributed under the terms of the MIT License.
|
|
|
|
*/
|
|
|
|
|
|
|
|
|
|
|
|
#ifndef _ARCH_TRAPS_H_
|
|
|
|
#define _ARCH_TRAPS_H_
|
|
|
|
|
|
|
|
|
|
|
|
# NOTE: this macro don't save SP, it should be saved manually
|
2021-11-09 12:39:16 -06:00
|
|
|
.macro PushTrapFrame extSize
|
|
|
|
addi sp, sp, -(\extSize + 256)
|
2021-06-06 22:20:49 +09:00
|
|
|
|
2021-11-09 12:39:16 -06:00
|
|
|
sd ra, \extSize + 0*8(sp)
|
|
|
|
sd t6, \extSize + 1*8(sp)
|
|
|
|
# sd sp, \extSize + 2*8(sp) # sp
|
|
|
|
sd gp, \extSize + 3*8(sp)
|
|
|
|
sd tp, \extSize + 4*8(sp)
|
|
|
|
sd t0, \extSize + 5*8(sp)
|
|
|
|
sd t1, \extSize + 6*8(sp)
|
|
|
|
sd t2, \extSize + 7*8(sp)
|
|
|
|
sd t5, \extSize + 8*8(sp)
|
|
|
|
sd s1, \extSize + 9*8(sp)
|
|
|
|
sd a0, \extSize + 10*8(sp)
|
|
|
|
sd a1, \extSize + 11*8(sp)
|
|
|
|
sd a2, \extSize + 12*8(sp)
|
|
|
|
sd a3, \extSize + 13*8(sp)
|
|
|
|
sd a4, \extSize + 14*8(sp)
|
|
|
|
sd a5, \extSize + 15*8(sp)
|
|
|
|
sd a6, \extSize + 16*8(sp)
|
|
|
|
sd a7, \extSize + 17*8(sp)
|
|
|
|
sd s2, \extSize + 18*8(sp)
|
|
|
|
sd s3, \extSize + 19*8(sp)
|
|
|
|
sd s4, \extSize + 20*8(sp)
|
|
|
|
sd s5, \extSize + 21*8(sp)
|
|
|
|
sd s6, \extSize + 22*8(sp)
|
|
|
|
sd s7, \extSize + 23*8(sp)
|
|
|
|
sd s8, \extSize + 24*8(sp)
|
|
|
|
sd s9, \extSize + 25*8(sp)
|
|
|
|
sd s10, \extSize + 26*8(sp)
|
|
|
|
sd s11, \extSize + 27*8(sp)
|
|
|
|
sd t3, \extSize + 28*8(sp)
|
|
|
|
sd t4, \extSize + 29*8(sp)
|
|
|
|
sd fp, \extSize + 30*8(sp)
|
2021-06-06 22:20:49 +09:00
|
|
|
|
2021-11-09 12:39:16 -06:00
|
|
|
addi fp, sp, \extSize + 256
|
2021-06-06 22:20:49 +09:00
|
|
|
.endm
|
|
|
|
|
|
|
|
|
2021-11-09 12:39:16 -06:00
|
|
|
.macro PopTrapFrame extSize
|
|
|
|
ld ra, \extSize + 0*8(sp)
|
|
|
|
ld t6, \extSize + 1*8(sp)
|
|
|
|
# ld sp, \extSize + 2*8(sp) restore later
|
|
|
|
ld gp, \extSize + 3*8(sp)
|
|
|
|
# ld tp, \extSize + 4*8(sp)
|
|
|
|
ld t0, \extSize + 5*8(sp)
|
|
|
|
ld t1, \extSize + 6*8(sp)
|
|
|
|
ld t2, \extSize + 7*8(sp)
|
|
|
|
ld t5, \extSize + 8*8(sp)
|
|
|
|
ld s1, \extSize + 9*8(sp)
|
|
|
|
ld a0, \extSize + 10*8(sp)
|
|
|
|
ld a1, \extSize + 11*8(sp)
|
|
|
|
ld a2, \extSize + 12*8(sp)
|
|
|
|
ld a3, \extSize + 13*8(sp)
|
|
|
|
ld a4, \extSize + 14*8(sp)
|
|
|
|
ld a5, \extSize + 15*8(sp)
|
|
|
|
ld a6, \extSize + 16*8(sp)
|
|
|
|
ld a7, \extSize + 17*8(sp)
|
|
|
|
ld s2, \extSize + 18*8(sp)
|
|
|
|
ld s3, \extSize + 19*8(sp)
|
|
|
|
ld s4, \extSize + 20*8(sp)
|
|
|
|
ld s5, \extSize + 21*8(sp)
|
|
|
|
ld s6, \extSize + 22*8(sp)
|
|
|
|
ld s7, \extSize + 23*8(sp)
|
|
|
|
ld s8, \extSize + 24*8(sp)
|
|
|
|
ld s9, \extSize + 25*8(sp)
|
|
|
|
ld s10, \extSize + 26*8(sp)
|
|
|
|
ld s11, \extSize + 27*8(sp)
|
|
|
|
ld t3, \extSize + 28*8(sp)
|
|
|
|
ld t4, \extSize + 29*8(sp)
|
|
|
|
ld fp, \extSize + 30*8(sp)
|
2021-06-06 22:20:49 +09:00
|
|
|
|
2021-11-09 12:39:16 -06:00
|
|
|
ld sp, \extSize + 2*8(sp)
|
2021-06-06 22:20:49 +09:00
|
|
|
.endm
|
|
|
|
|
|
|
|
|
|
|
|
#endif // _ARCH_TRAPS_H_
|