etrap_64.S (e5451c8f8330e03ad3cfa16048b4daf961af434f) etrap_64.S (a7159a87a3836f61a97882e671d2d66bbb96c62e)
1/*
2 * etrap.S: Preparing for entry into the kernel on Sparc V9.
3 *
4 * Copyright (C) 1996, 1997 David S. Miller (davem@caip.rutgers.edu)
5 * Copyright (C) 1997, 1998, 1999 Jakub Jelinek (jj@ultra.linux.cz)
6 */
7
8

--- 24 unchanged lines hidden (view full) ---

33etrap_syscall: TRAP_LOAD_THREAD_REG(%g6, %g1)
34 rdpr %tstate, %g1
35 or %g1, %g3, %g1
36 sllx %g2, 20, %g3
37 andcc %g1, TSTATE_PRIV, %g0
38 or %g1, %g3, %g1
39 bne,pn %xcc, 1f
40 sub %sp, STACKFRAME_SZ+TRACEREG_SZ-STACK_BIAS, %g2
1/*
2 * etrap.S: Preparing for entry into the kernel on Sparc V9.
3 *
4 * Copyright (C) 1996, 1997 David S. Miller (davem@caip.rutgers.edu)
5 * Copyright (C) 1997, 1998, 1999 Jakub Jelinek (jj@ultra.linux.cz)
6 */
7
8

--- 24 unchanged lines hidden (view full) ---

33etrap_syscall: TRAP_LOAD_THREAD_REG(%g6, %g1)
34 rdpr %tstate, %g1
35 or %g1, %g3, %g1
36 sllx %g2, 20, %g3
37 andcc %g1, TSTATE_PRIV, %g0
38 or %g1, %g3, %g1
39 bne,pn %xcc, 1f
40 sub %sp, STACKFRAME_SZ+TRACEREG_SZ-STACK_BIAS, %g2
41 wrpr %g0, 7, %cleanwin
41661: wrpr %g0, 7, %cleanwin
42 .section .fast_win_ctrl_1insn_patch, "ax"
43 .word 661b
44 .word 0x85880000 ! allclean
45 .previous
42
43 sethi %hi(TASK_REGOFF), %g2
44 sethi %hi(TSTATE_PEF), %g3
45 or %g2, %lo(TASK_REGOFF), %g2
46 and %g1, %g3, %g3
47 brnz,pn %g3, 1f
48 add %g6, %g2, %g2
49 wr %g0, 0, %fprs

--- 33 unchanged lines hidden (view full) ---

83 nop
84 ba,a,pt %xcc, etrap_user_spill_64bit
85
86etrap_save: save %g2, -STACK_BIAS, %sp
87 mov %g6, %l6
88
89 bne,pn %xcc, 3f
90 mov PRIMARY_CONTEXT, %l4
46
47 sethi %hi(TASK_REGOFF), %g2
48 sethi %hi(TSTATE_PEF), %g3
49 or %g2, %lo(TASK_REGOFF), %g2
50 and %g1, %g3, %g3
51 brnz,pn %g3, 1f
52 add %g6, %g2, %g2
53 wr %g0, 0, %fprs

--- 33 unchanged lines hidden (view full) ---

87 nop
88 ba,a,pt %xcc, etrap_user_spill_64bit
89
90etrap_save: save %g2, -STACK_BIAS, %sp
91 mov %g6, %l6
92
93 bne,pn %xcc, 3f
94 mov PRIMARY_CONTEXT, %l4
91 rdpr %canrestore, %g3
95661: rdpr %canrestore, %g3
96 .section .fast_win_ctrl_1insn_patch, "ax"
97 .word 661b
98 nop
99 .previous
100
92 rdpr %wstate, %g2
101 rdpr %wstate, %g2
93 wrpr %g0, 0, %canrestore
102661: wrpr %g0, 0, %canrestore
103 .section .fast_win_ctrl_1insn_patch, "ax"
104 .word 661b
105 nop
106 .previous
94 sll %g2, 3, %g2
95
96 /* Set TI_SYS_FPDEPTH to 1 and clear TI_SYS_NOERROR. */
97 mov 1, %l5
98 sth %l5, [%l6 + TI_SYS_NOERROR]
99
107 sll %g2, 3, %g2
108
109 /* Set TI_SYS_FPDEPTH to 1 and clear TI_SYS_NOERROR. */
110 mov 1, %l5
111 sth %l5, [%l6 + TI_SYS_NOERROR]
112
100 wrpr %g3, 0, %otherwin
113661: wrpr %g3, 0, %otherwin
114 .section .fast_win_ctrl_1insn_patch, "ax"
115 .word 661b
116 .word 0x87880000 ! otherw
117 .previous
118
101 wrpr %g2, 0, %wstate
102 sethi %hi(sparc64_kern_pri_context), %g2
103 ldx [%g2 + %lo(sparc64_kern_pri_context)], %g3
104
105661: stxa %g3, [%l4] ASI_DMMU
106 .section .sun4v_1insn_patch, "ax"
107 .word 661b
108 stxa %g3, [%l4] ASI_MMU

--- 132 unchanged lines hidden ---
119 wrpr %g2, 0, %wstate
120 sethi %hi(sparc64_kern_pri_context), %g2
121 ldx [%g2 + %lo(sparc64_kern_pri_context)], %g3
122
123661: stxa %g3, [%l4] ASI_DMMU
124 .section .sun4v_1insn_patch, "ax"
125 .word 661b
126 stxa %g3, [%l4] ASI_MMU

--- 132 unchanged lines hidden ---