Commit | Line | Data |
---|---|---|
6eda3a75 DM |
1 | .globl utrap_trap |
2 | .type utrap_trap,#function | |
3 | utrap_trap: /* %g3=handler,%g4=level */ | |
4 | TRAP_LOAD_THREAD_REG(%g6, %g1) | |
5 | ldx [%g6 + TI_UTRAPS], %g1 | |
6 | brnz,pt %g1, invoke_utrap | |
7 | nop | |
8 | ||
9 | ba,pt %xcc, etrap | |
10 | rd %pc, %g7 | |
11 | mov %l4, %o1 | |
12 | call bad_trap | |
13 | add %sp, PTREGS_OFF, %o0 | |
14 | ba,pt %xcc, rtrap | |
15 | nop | |
16 | ||
17 | invoke_utrap: | |
18 | sllx %g3, 3, %g3 | |
19 | ldx [%g1 + %g3], %g1 | |
20 | save %sp, -128, %sp | |
21 | rdpr %tstate, %l6 | |
22 | rdpr %cwp, %l7 | |
23 | andn %l6, TSTATE_CWP, %l6 | |
24 | wrpr %l6, %l7, %tstate | |
25 | rdpr %tpc, %l6 | |
26 | rdpr %tnpc, %l7 | |
27 | wrpr %g1, 0, %tnpc | |
28 | done | |
29 | .size utrap_trap,.-utrap_trap |