Lines Matching full:a2

104  *   a2:	new stack pointer, original value in depc
106 * depc: a2, original value saved on stack (PT_DEPC)
124 /* Save a1, a2, a3, and set SP. */
127 s32i a1, a2, PT_AREG1
128 s32i a0, a2, PT_AREG2
129 s32i a3, a2, PT_AREG3
130 mov a1, a2
137 movi a2, 0
138 wsr a2, depc # terminate user stack trace with 0
140 xsr a2, icountlevel
142 s32i a2, a1, PT_ICOUNTLEVEL
145 rur a2, threadptr
146 s32i a2, a1, PT_THREADPTR
150 /* Assume ws = xxwww1yyyy. Rotate ws right, so that a2 = yyyyxxwww1 */
153 rsr a2, windowbase
155 ssr a2
156 s32i a2, a1, PT_WINDOWBASE
158 slli a2, a3, 32-WSBITS
159 src a2, a3, a2
160 srli a2, a2, 32-WSBITS
161 s32i a2, a1, PT_WMASK # needed for restoring registers
163 movi a2, 0
165 s32i a2, a1, PT_WINDOWBASE
172 UABI_W _bbsi.l a2, 1, .Lsave_window_registers
177 UABI_W _bbsi.l a2, 2, .Lsave_window_registers
182 UABI_W _bbsi.l a2, 3, .Lsave_window_registers
191 beqi a2, 1, common_exception
196 * Assume a2 is: 001001000110001
201 addi a3, a2, -1 # eliminate '1' in bit 0: yyyyxxww0
203 and a3, a3, a2 # max. only one bit is set
215 extui a2, a2, 0, 4 # mask for the first 16 registers
216 or a2, a3, a2
217 s32i a2, a1, PT_WMASK # needed when we restore the reg-file
224 s32i a2, a5, PT_AREG_END - 8
232 rsr a2, sar # original WINDOWBASE
234 ssl a2
237 wsr a2, windowbase # and WINDOWSTART
259 * a2: new stack pointer, original in DEPC
261 * depc: a2, original value saved on stack (PT_DEPC)
278 /* Save a1, a2, a3, and set SP. */
280 rsr a0, depc # get a2
281 s32i a1, a2, PT_AREG1
282 s32i a0, a2, PT_AREG2
283 s32i a3, a2, PT_AREG3
284 mov a1, a2
291 movi a2, 0
293 xsr a2, icountlevel
295 s32i a2, a1, PT_ICOUNTLEVEL
299 /* Assume ws = xxwww1yyyy. Rotate ws right, so that a2 = yyyyxxwww1 */
301 rsr a2, windowbase # don't need to save these, we only
303 ssr a2
304 slli a2, a3, 32-WSBITS
305 src a2, a3, a2
306 srli a2, a2, 32-WSBITS
307 s32i a2, a1, PT_WMASK # needed for kernel_exception_exit
312 KABI_W _bbsi.l a2, 1, 1f
317 KABI_W _bbsi.l a2, 2, 1f
322 KABI_W _bbsi.l a2, 3, 1f
329 _bnei a2, 1, 1f
355 rsr a2, debugcause
357 s32i a2, a1, PT_DEBUGCAUSE
360 movi a2, NO_SYSCALL
362 s32i a2, a1, PT_SYSCALL
363 movi a2, 0
366 xsr a2, lcount
367 s32i a2, a1, PT_LCOUNT
377 rsr a2, exccause
380 s32i a2, a1, PT_EXCCAUSE
402 beq a2, a0, .Lmedium_level_irq
403 bnei a2, EXCCAUSE_LEVEL1_INTERRUPT, .Lexception
418 addi a2, a2, -EXCCAUSE_LEVEL1_INTERRUPT
422 moveqz a3, a0, a2 # a3 = LOCKLEVEL iff interrupt
423 KABI_W movi a2, PS_WOE_MASK
424 KABI_W or a3, a3, a2
591 l32i a2, a1, PT_WINDOWBASE
595 ssr a2 # preserve user's WB in the SAR
596 wsr a2, windowbase # switch to user's saved WB
599 l32i a2, a1, PT_WMASK # register frames saved (in bits 4...9)
610 mov a2, a6
615 addi a2, a6, -16 # decrementing Y in WMASK
620 _bgeui a2, 16, 1b
640 * Note: a2 still contains WMASK (if we've returned to the original
641 * frame where we had loaded a2), or at least the lower 4 bits
646 movi a2, 1
687 l32i a2, a1, PT_WMASK
688 _beqi a2, 1, common_exception_exit # Spilled before exception,jump
713 * Note: We expect a2 to hold PT_WMASK
716 movi a2, 1
723 _bbsi.l a2, 1, 1f
728 _bbsi.l a2, 2, 1f
733 _bbsi.l a2, 3, 1f
741 1: l32i a2, a1, PT_PC
743 wsr a2, epc1
748 l32i a2, a1, PT_LBEG
750 wsr a2, lbeg
751 l32i a2, a1, PT_LCOUNT
753 wsr a2, lcount
758 l32i a2, a1, PT_ICOUNTLEVEL
760 wsr a2, icountlevel
767 l32i a2, a1, PT_AREG2
800 wsr a2, depc # save a2 temporarily
801 rsr a2, SREG_EPC + XCHAL_DEBUGLEVEL
802 wsr a2, epc1
804 movi a2, EXCCAUSE_MAPPED_DEBUG
805 wsr a2, exccause
809 movi a2, 1 << PS_EXCM_BIT
810 or a2, a0, a2
811 wsr a2, ps
815 bbsi.l a2, PS_UM_BIT, .Ldebug_exception_user # jump if user mode
816 addi a2, a1, -16 - PT_KERNEL_SIZE # assume kernel stack
820 s32i a1, a2, PT_AREG1
821 s32i a0, a2, PT_AREG0
823 s32i a0, a2, PT_DEPC # mark it as a regular exception
826 s32i a3, a2, PT_AREG3
827 s32i a0, a2, PT_AREG2
828 mov a1, a2
836 GET_THREAD_INFO(a2, a1)
837 l32i a3, a2, TI_PRE_COUNT
839 s32i a3, a2, TI_PRE_COUNT
842 rsr a2, ps
843 bbsi.l a2, PS_UM_BIT, _user_exception
847 rsr a2, excsave1
848 l32i a2, a2, EXC_TABLE_KSTK # load kernel stack pointer
919 * - a2 contains a valid stackpointer
999 * a2: new stack pointer, original in DEPC
1001 * depc: a2, original value saved on stack (PT_DEPC)
1011 rsr a2, ps
1012 extui a3, a2, PS_OWB_SHIFT, PS_OWB_WIDTH
1019 xor a2, a2, a3
1020 wsr a2, ps
1045 * a2: new stack pointer, original in DEPC
1047 * depc: a2, original value saved on stack (PT_DEPC)
1055 s32i a3, a2, PT_AREG3
1060 GET_THREAD_INFO(a3, a2)
1064 l32i a3, a2, PT_AREG3
1065 l32i a0, a2, PT_AREG0
1066 rsr a2, depc
1087 * a2: new stack pointer, original in DEPC
1089 * depc: a2, original value saved on stack (PT_DEPC)
1101 l32i a0, a2, PT_DEPC
1116 l32i a0, a2, PT_AREG0 # restore a0
1117 xsr a2, depc # restore a2, depc
1131 * a2 a6 a3 a4 a5
1135 * a0: a2 (syscall-nr), original value saved on stack (PT_AREG0)
1137 * a2: new stack pointer, original in a0 and DEPC
1140 * depc: a2, original value saved on stack (PT_DEPC)
1146 * Note: we don't have to save a2; a2 holds the return value
1155 s32i a7, a2, PT_AREG7 # we need an additional register
1157 access_ok a3, a7, a0, a2, .Leac # a0: scratch reg, a2: sp
1169 l32i a7, a2, PT_AREG7 # restore a7
1170 l32i a0, a2, PT_AREG0 # restore a0
1171 movi a2, 1 # and return 1
1174 1: l32i a7, a2, PT_AREG7 # restore a7
1175 l32i a0, a2, PT_AREG0 # restore a0
1176 movi a2, 0 # return 0 (note that we cannot set
1188 mov a0, a2
1189 mov a2, a7
1194 .Leac: l32i a7, a2, PT_AREG7 # restore a7
1195 l32i a0, a2, PT_AREG0 # restore a0
1196 movi a2, -EFAULT
1199 .Lill: l32i a7, a2, PT_AREG7 # restore a7
1200 l32i a0, a2, PT_AREG0 # restore a0
1201 movi a2, -EINVAL
1210 l32i a0, a2, PT_AREG0 # restore a0
1211 movi a2, -ENOSYS
1225 * a2: new stack pointer, original in DEPC
1227 * depc: a2, original value saved on stack (PT_DEPC)
1250 s32i a3, a2, PT_AREG3
1251 s32i a0, a2, PT_SAR
1255 s32i a4, a2, PT_AREG4
1256 s32i a7, a2, PT_AREG7
1257 s32i a8, a2, PT_AREG8
1258 s32i a11, a2, PT_AREG11
1259 s32i a12, a2, PT_AREG12
1260 s32i a15, a2, PT_AREG15
1395 l32i a3, a2, PT_SAR
1396 l32i a0, a2, PT_AREG0
1398 l32i a3, a2, PT_AREG3
1402 l32i a4, a2, PT_AREG4
1403 l32i a7, a2, PT_AREG7
1404 l32i a8, a2, PT_AREG8
1405 l32i a11, a2, PT_AREG11
1406 l32i a12, a2, PT_AREG12
1407 l32i a15, a2, PT_AREG15
1409 movi a2, 0
1461 * a2: trashed, original value in EXC_TABLE_DOUBLE_SAVE
1467 rsr a2, windowbase # get current windowbase (a2 is saved)
1469 ssl a2 # set shift (32 - WB)
1484 slli a2, a3, 32-WSBITS
1485 src a2, a3, a2 # a2 = xxwww1yyxxxwww1yy......
1486 wsr a2, windowstart # set corrected windowstart
1489 rsr a2, excsave1
1490 l32i a2, a2, EXC_TABLE_DOUBLE_SAVE # restore a2
1491 xsr a2, excsave1
1492 s32i a3, a2, EXC_TABLE_DOUBLE_SAVE # save a3
1493 l32i a3, a2, EXC_TABLE_PARAM # original WB (in user task)
1494 xsr a2, excsave1
1498 * a0, a1, a2 same
1510 * a2: kernel stack pointer
1519 addi a2, a2, -PT_USER_SIZE
1520 s32i a0, a2, PT_AREG0
1525 s32i a3, a2, PT_DEPC # setup depc
1540 /* When we return here, all registers have been restored (a2: DEPC) */
1542 wsr a2, depc # exception address
1546 rsr a2, excsave1
1547 s32i a3, a2, EXC_TABLE_DOUBLE_SAVE
1549 s32i a3, a2, EXC_TABLE_FIXUP
1551 s32i a3, a2, EXC_TABLE_PARAM
1552 l32i a2, a2, EXC_TABLE_KSTK
1572 l32i a0, a2, PT_AREG0 # restore a0
1573 movi a2, -ENOSYS
1604 * a2: new stack pointer, original in DEPC
1606 * depc: a2, original value saved on stack (PT_DEPC)
1617 s32i a1, a2, PT_AREG1
1618 s32i a3, a2, PT_AREG3
1636 GET_CURRENT(a1,a2)
1699 l32i a0, a2, PT_AREG0
1700 l32i a1, a2, PT_AREG1
1701 l32i a3, a2, PT_AREG3
1702 l32i a2, a2, PT_DEPC
1704 bgeui a2, VALID_DOUBLE_EXCEPTION_ADDRESS, 1f
1708 rsr a2, depc
1713 1: xsr a2, depc
1740 l32i a0, a2, PT_DEPC
1799 s32i a1, a2, PT_AREG2
1800 mov a1, a2
1802 rsr a2, ps
1803 bbsi.l a2, PS_UM_BIT, 1f
1818 * a2: new stack pointer, original in DEPC
1820 * depc: a2, original value saved on stack (PT_DEPC)
1831 s32i a1, a2, PT_AREG1
1832 s32i a3, a2, PT_AREG3
1834 GET_CURRENT(a1,a2)
1875 l32i a3, a2, PT_AREG3
1876 l32i a1, a2, PT_AREG1
1877 l32i a0, a2, PT_AREG0
1878 l32i a2, a2, PT_DEPC
1880 bgeui a2, VALID_DOUBLE_EXCEPTION_ADDRESS, 1f
1881 rsr a2, depc
1886 1: xsr a2, depc
1901 rsr a3, depc # still holds a2
1902 s32i a3, a2, PT_AREG2
1903 mov a1, a2
1905 rsr a2, ps
1906 bbsi.l a2, PS_UM_BIT, 1f
1919 * a2 a3
1933 mov abi_saved0, a2
2041 * a2 a2 a3
2060 l32i a4, a2, TASK_THREAD_INFO
2066 addi a10, a2, TASK_THREAD
2070 s32i a0, a2, THREAD_RA # save return address
2071 s32i a1, a2, THREAD_SP # save stack pointer
2196 movi a2, .Lsaved_regs
2198 s32i a0, a2, 0
2199 s32i a1, a2, 4
2204 s32i a12, a2, 8
2205 s32i a13, a2, 12
2206 s32i a14, a2, 16
2207 s32i a15, a2, 20
2212 mov a2, abi_rv
2225 movi a2, restore_pblist
2226 l32i a2, a2, 0
2229 l32i a3, a2, PBE_ADDRESS
2230 l32i a4, a2, PBE_ORIG_ADDRESS
2245 l32i a2, a2, PBE_NEXT
2246 bnez a2, .Lcopy_pbe
2248 movi a2, .Lsaved_regs
2250 l32i a0, a2, 0
2251 l32i a1, a2, 4
2254 l32i a12, a2, 8
2255 l32i a13, a2, 12
2256 l32i a14, a2, 16
2257 l32i a15, a2, 20
2259 movi a2, 0