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