1*f0e1bca0SX512 /* 2*f0e1bca0SX512 * Copyright 2021, Haiku, Inc. 3*f0e1bca0SX512 * Distributed under the terms of the MIT License. 4*f0e1bca0SX512 */ 5*f0e1bca0SX512 6*f0e1bca0SX512 7*f0e1bca0SX512 #ifndef _ARCH_TRAPS_H_ 8*f0e1bca0SX512 #define _ARCH_TRAPS_H_ 9*f0e1bca0SX512 10*f0e1bca0SX512 11*f0e1bca0SX512 # NOTE: this macro don't save SP, it should be saved manually 12*f0e1bca0SX512 .macro PushTrapFrame 13*f0e1bca0SX512 addi sp, sp, -256 14*f0e1bca0SX512 15*f0e1bca0SX512 sd ra, 0*8(sp) 16*f0e1bca0SX512 sd t6, 1*8(sp) 17*f0e1bca0SX512 # sd sp, 2*8(sp) # sp 18*f0e1bca0SX512 sd gp, 3*8(sp) 19*f0e1bca0SX512 sd tp, 4*8(sp) 20*f0e1bca0SX512 sd t0, 5*8(sp) 21*f0e1bca0SX512 sd t1, 6*8(sp) 22*f0e1bca0SX512 sd t2, 7*8(sp) 23*f0e1bca0SX512 sd t5, 8*8(sp) 24*f0e1bca0SX512 sd s1, 9*8(sp) 25*f0e1bca0SX512 sd a0, 10*8(sp) 26*f0e1bca0SX512 sd a1, 11*8(sp) 27*f0e1bca0SX512 sd a2, 12*8(sp) 28*f0e1bca0SX512 sd a3, 13*8(sp) 29*f0e1bca0SX512 sd a4, 14*8(sp) 30*f0e1bca0SX512 sd a5, 15*8(sp) 31*f0e1bca0SX512 sd a6, 16*8(sp) 32*f0e1bca0SX512 sd a7, 17*8(sp) 33*f0e1bca0SX512 sd s2, 18*8(sp) 34*f0e1bca0SX512 sd s3, 19*8(sp) 35*f0e1bca0SX512 sd s4, 20*8(sp) 36*f0e1bca0SX512 sd s5, 21*8(sp) 37*f0e1bca0SX512 sd s6, 22*8(sp) 38*f0e1bca0SX512 sd s7, 23*8(sp) 39*f0e1bca0SX512 sd s8, 24*8(sp) 40*f0e1bca0SX512 sd s9, 25*8(sp) 41*f0e1bca0SX512 sd s10, 26*8(sp) 42*f0e1bca0SX512 sd s11, 27*8(sp) 43*f0e1bca0SX512 sd t3, 28*8(sp) 44*f0e1bca0SX512 sd t4, 29*8(sp) 45*f0e1bca0SX512 sd fp, 30*8(sp) 46*f0e1bca0SX512 47*f0e1bca0SX512 addi fp, sp, 256 48*f0e1bca0SX512 .endm 49*f0e1bca0SX512 50*f0e1bca0SX512 51*f0e1bca0SX512 .macro PopTrapFrame 52*f0e1bca0SX512 ld ra, 0*8(sp) 53*f0e1bca0SX512 ld t6, 1*8(sp) 54*f0e1bca0SX512 # ld sp, 2*8(sp) restore later 55*f0e1bca0SX512 ld gp, 3*8(sp) 56*f0e1bca0SX512 # ld tp, 4*8(sp) 57*f0e1bca0SX512 ld t0, 5*8(sp) 58*f0e1bca0SX512 ld t1, 6*8(sp) 59*f0e1bca0SX512 ld t2, 7*8(sp) 60*f0e1bca0SX512 ld t5, 8*8(sp) 61*f0e1bca0SX512 ld s1, 9*8(sp) 62*f0e1bca0SX512 ld a0, 10*8(sp) 63*f0e1bca0SX512 ld a1, 11*8(sp) 64*f0e1bca0SX512 ld a2, 12*8(sp) 65*f0e1bca0SX512 ld a3, 13*8(sp) 66*f0e1bca0SX512 ld a4, 14*8(sp) 67*f0e1bca0SX512 ld a5, 15*8(sp) 68*f0e1bca0SX512 ld a6, 16*8(sp) 69*f0e1bca0SX512 ld a7, 17*8(sp) 70*f0e1bca0SX512 ld s2, 18*8(sp) 71*f0e1bca0SX512 ld s3, 19*8(sp) 72*f0e1bca0SX512 ld s4, 20*8(sp) 73*f0e1bca0SX512 ld s5, 21*8(sp) 74*f0e1bca0SX512 ld s6, 22*8(sp) 75*f0e1bca0SX512 ld s7, 23*8(sp) 76*f0e1bca0SX512 ld s8, 24*8(sp) 77*f0e1bca0SX512 ld s9, 25*8(sp) 78*f0e1bca0SX512 ld s10, 26*8(sp) 79*f0e1bca0SX512 ld s11, 27*8(sp) 80*f0e1bca0SX512 ld t3, 28*8(sp) 81*f0e1bca0SX512 ld t4, 29*8(sp) 82*f0e1bca0SX512 ld fp, 30*8(sp) 83*f0e1bca0SX512 84*f0e1bca0SX512 ld sp, 2*8(sp) 85*f0e1bca0SX512 .endm 86*f0e1bca0SX512 87*f0e1bca0SX512 88*f0e1bca0SX512 #endif // _ARCH_TRAPS_H_ 89