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