• Home
  • History
  • Annotate
  • Raw
  • Download
  • only in /netgear-WNDR4500v2-V1.0.0.60_1.0.38/src/linux/linux-2.6/arch/xtensa/kernel/

Lines Matching refs:a2

93  *   a2:	new stack pointer, original value in depc
95 * depc: a2, original value saved on stack (PT_DEPC)
112 /* Save a2, a3, and depc, restore excsave_1 and set SP. */
116 s32i a1, a2, PT_AREG1
117 s32i a0, a2, PT_AREG2
118 s32i a3, a2, PT_AREG3
119 mov a1, a2
126 movi a2, 0
128 xsr a2, ICOUNTLEVEL
130 s32i a2, a1, PT_ICOUNTLEVEL
133 /* Assume ws = xxwww1yyyy. Rotate ws right, so that a2 = yyyyxxwww1 */
135 rsr a2, WINDOWBASE
137 ssr a2
138 s32i a2, a1, PT_WINDOWBASE
140 slli a2, a3, 32-WSBITS
141 src a2, a3, a2
142 srli a2, a2, 32-WSBITS
143 s32i a2, a1, PT_WMASK # needed for restoring registers
147 _bbsi.l a2, 1, 1f
152 _bbsi.l a2, 2, 1f
157 _bbsi.l a2, 3, 1f
162 _bnei a2, 1, 1f # only one valid frame?
171 * Assume a2 is: 001001000110001
176 1: addi a3, a2, -1 # eliminate '1' in bit 0: yyyyxxww0
178 and a3, a3, a2 # max. only one bit is set
190 extui a2, a2, 0, 4 # mask for the first 16 registers
191 or a2, a3, a2
192 s32i a2, a1, PT_WMASK # needed when we restore the reg-file
199 s32i a2, a5, PT_AREG_END - 8
207 rsr a2, SAR # original WINDOWBASE
209 ssl a2
212 wsr a2, WINDOWBASE # and WINDOWSTART
221 * Note: We must assume that xchal_extra_store_funcbody destroys a2..a15
224 GET_CURRENT(a2,a1)
225 addi a2, a2, THREAD_CP_SAVE
245 * a2: new stack pointer, original in DEPC
247 * depc: a2, original value saved on stack (PT_DEPC)
264 /* Save a0, a2, a3, DEPC and set SP. */
267 rsr a0, DEPC # get a2
268 s32i a1, a2, PT_AREG1
269 s32i a0, a2, PT_AREG2
270 s32i a3, a2, PT_AREG3
271 mov a1, a2
278 movi a2, 0
280 xsr a2, ICOUNTLEVEL
282 s32i a2, a1, PT_ICOUNTLEVEL
285 /* Assume ws = xxwww1yyyy. Rotate ws right, so that a2 = yyyyxxwww1 */
287 rsr a2, WINDOWBASE # don't need to save these, we only
289 ssr a2
290 slli a2, a3, 32-WSBITS
291 src a2, a3, a2
292 srli a2, a2, 32-WSBITS
293 s32i a2, a1, PT_WMASK # needed for kernel_exception_exit
297 _bbsi.l a2, 1, 1f
302 _bbsi.l a2, 2, 1f
307 _bbsi.l a2, 3, 1f
318 extui a2, a1, TASK_SIZE_BITS,XX
320 _bge a2, a3, out_of_stack_panic
337 rsr a2, DEBUGCAUSE
339 s32i a2, a1, PT_DEBUGCAUSE
342 movi a2, -1
344 s32i a2, a1, PT_SYSCALL
345 movi a2, 0
347 xsr a2, LCOUNT
348 s32i a2, a1, PT_LCOUNT
354 rsr a2, EXCSAVE_1
356 s32i a3, a2, EXC_TABLE_FIXUP
368 movi a2, 1
370 moveqz a3, a2, a0 # a3 = 1 iff interrupt exception
371 movi a2, 1 << PS_WOE_BIT
372 or a3, a3, a2
380 rsr a2, LBEG
382 s32i a2, a1, PT_LBEG
421 GET_THREAD_INFO(a2,a1)
422 l32i a4, a2, TI_FLAGS
457 4: /* a2 holds GET_CURRENT(a2,a1) */
463 /* Note: a2 still contains GET_CURRENT(a2,a1) */
464 addi a2, a2, THREAD_CP_SAVE
473 l32i a2, a1, PT_WINDOWBASE
477 ssr a2 # preserve user's WB in the SAR
478 wsr a2, WINDOWBASE # switch to user's saved WB
481 l32i a2, a1, PT_WMASK # register frames saved (in bits 4...9)
492 mov a2, a6
497 addi a2, a6, -16 # decrementing Y in WMASK
502 _bgeui a2, 16, 2b
521 * Note: a2 still contains WMASK (if we've returned to the original
522 * frame where we had loaded a2), or at least the lower 4 bits
550 GET_THREAD_INFO(a2)
551 l32i a3, a2, TI_PREEMPT
554 l32i a2, a2, TI_FLAGS
586 l32i a2, a1, PT_WMASK
587 _beqi a2, 1, common_exception_exit # Spilled before exception,jump
612 * Note: We expect a2 to hold PT_WMASK
617 _bbsi.l a2, 1, 1f
622 _bbsi.l a2, 2, 1f
627 _bbsi.l a2, 3, 1f
635 1: l32i a2, a1, PT_PC
637 wsr a2, EPC_1
642 l32i a2, a1, PT_LBEG
644 wsr a2, LBEG
645 l32i a2, a1, PT_LCOUNT
647 wsr a2, LCOUNT
651 l32i a2, a1, PT_ICOUNTLEVEL
653 wsr a2, ICOUNTLEVEL
660 l32i a2, a1, PT_AREG2
689 wsr a2, DEPC # save a2 temporarily
690 rsr a2, EPC + XCHAL_DEBUGLEVEL
691 wsr a2, EPC_1
693 movi a2, EXCCAUSE_MAPPED_DEBUG
694 wsr a2, EXCCAUSE
698 movi a2, 1 << PS_EXCM_BIT
699 or a2, a0, a2
701 wsr a2, PS
706 bbsi.l a2, PS_UM_BIT, 2f # jump if user mode
708 addi a2, a1, -16-PT_SIZE # assume kernel stack
709 s32i a0, a2, PT_AREG0
711 s32i a1, a2, PT_AREG1
712 s32i a0, a2, PT_DEPC # mark it as a regular exception
714 s32i a3, a2, PT_AREG3
715 s32i a0, a2, PT_AREG2
716 mov a1, a2
719 2: rsr a2, EXCSAVE_1
720 l32i a2, a2, EXC_TABLE_KSTK # load kernel stack pointer
721 s32i a0, a2, PT_AREG0
723 s32i a1, a2, PT_AREG1
724 s32i a0, a2, PT_DEPC
726 s32i a3, a2, PT_AREG3
727 s32i a0, a2, PT_AREG2
728 mov a1, a2
745 * - a2 contains a valid stackpointer
802 * a2: new stack pointer, original in DEPC
804 * depc: a2, original value saved on stack (PT_DEPC)
823 l32i a0, a2, PT_DEPC
826 rsr a0, DEPC # get a2
827 s32i a4, a2, PT_AREG4 # save a4 and
828 s32i a0, a2, PT_AREG2 # a2 to stack
839 s32i a3, a2, PT_AREG3 # save a3 to stack
859 l32i a3, a2, PT_AREG0; _j 1f; .align 8
861 l32i a3, a2, PT_AREG2; _j 1f; .align 8
862 l32i a3, a2, PT_AREG3; _j 1f; .align 8
863 l32i a3, a2, PT_AREG4; _j 1f; .align 8
897 /* a0,a4:avail a1:old user stack a2:exc. stack a3:new user stack. */
912 l32i a4, a2, PT_AREG4
913 l32i a3, a2, PT_AREG3
914 l32i a0, a2, PT_AREG0
915 l32i a2, a2, PT_AREG2
931 /* a0 dst-reg, a1 user-stack, a2 stack, a3 value of src reg. */
939 s32i a3, a2, PT_AREG0; _j 1f; .align 8
941 s32i a3, a2, PT_AREG2; _j 1f; .align 8
942 s32i a3, a2, PT_AREG3; _j 1f; .align 8
943 s32i a3, a2, PT_AREG4; _j 1f; .align 8
956 1: l32i a4, a2, PT_AREG4
957 l32i a3, a2, PT_AREG3
958 l32i a0, a2, PT_AREG0
959 l32i a2, a2, PT_AREG2
976 * a2: new stack pointer, original in DEPC
978 * depc: a2, original value saved on stack (PT_DEPC)
990 l32i a0, a2, PT_DEPC
1007 l32i a0, a2, PT_DEPC
1020 l32i a0, a2, PT_AREG0 # restore a0
1021 xsr a2, DEPC # restore a2, depc
1037 * a2 a6 a3 a4 a5
1041 * a0: a2 (syscall-nr), original value saved on stack (PT_AREG0)
1043 * a2: new stack pointer, original in a0 and DEPC
1046 * depc: a2, original value saved on stack (PT_DEPC)
1052 * Note: we don't have to save a2; a2 holds the return value
1082 s32i a7, a2, PT_AREG7 # we need an additional register
1084 access_ok a3, a7, a0, a2, .Leac # a0: scratch reg, a2: sp
1097 l32i a7, a2, PT_AREG7 # restore a7
1098 l32i a0, a2, PT_AREG0 # restore a0
1099 movi a2, 1 # and return 1
1103 1: l32i a7, a2, PT_AREG7 # restore a7
1104 l32i a0, a2, PT_AREG0 # restore a0
1105 movi a2, 0 # return 0 (note that we cannot set
1116 mov a0, a2
1117 mov a2, a7
1124 .Leac: l32i a7, a2, PT_AREG7 # restore a7
1125 l32i a0, a2, PT_AREG0 # restore a0
1126 movi a2, -EFAULT
1129 .Lill: l32i a7, a2, PT_AREG0 # restore a7
1130 l32i a0, a2, PT_AREG0 # restore a0
1131 movi a2, -EINVAL
1143 * a2: new stack pointer, original in DEPC
1145 * depc: a2, original value saved on stack (PT_DEPC)
1149 * Note: We don't need to save a2 in depc (return value)
1165 s32i a0, a2, PT_AREG4 # store SAR to PT_AREG4
1166 s32i a3, a2, PT_AREG3
1170 s32i a7, a2, PT_AREG5
1171 s32i a11, a2, PT_AREG6
1172 s32i a15, a2, PT_AREG7
1178 l32i a3, a2, PT_AREG4
1179 l32i a0, a2, PT_AREG0
1181 l32i a3, a2, PT_AREG3
1185 l32i a7, a2, PT_AREG5
1186 l32i a11, a2, PT_AREG6
1187 l32i a15, a2, PT_AREG7
1189 movi a2, 0
1199 * a2: trashed, original value in EXC_TABLE_DOUBLE_SAVE
1205 rsr a2, WINDOWBASE # get current windowbase (a2 is saved)
1207 ssl a2 # set shift (32 - WB)
1215 slli a2, a3, 1 # shift left by one
1217 slli a3, a2, 32-WSBITS
1218 src a2, a2, a3 # a1 = xxwww1yyxxxwww1yy......
1219 wsr a2, WINDOWSTART # set corrected windowstart
1222 l32i a2, a3, EXC_TABLE_DOUBLE_SAVE # restore a2
1227 * a0, a1, a2 same
1239 * a2: kernel stack pointer
1251 l32i a7, a2, PT_AREG5
1252 l32i a11, a2, PT_AREG6
1253 l32i a15, a2, PT_AREG7
1258 addi a2, a2, -PT_USER_SIZE
1259 s32i a0, a2, PT_AREG0
1264 s32i a3, a2, PT_DEPC # setup depc
1276 /* When we return here, all registers have been restored (a2: DEPC) */
1278 wsr a2, DEPC # exception address
1283 movi a2, fast_syscall_spill_registers_fixup
1284 s32i a2, a3, EXC_TABLE_FIXUP
1285 rsr a2, WINDOWBASE
1286 s32i a2, a3, EXC_TABLE_PARAM
1287 l32i a2, a3, EXC_TABLE_KSTK
1292 s32i a7, a2, PT_AREG5
1293 s32i a11, a2, PT_AREG6
1294 s32i a15, a2, PT_AREG7
1330 * Rotate ws right so that a2 = yyxxxwww1.
1333 wsr a2, DEPC # preserve a2
1334 rsr a2, WINDOWBASE
1336 ssr a2 # holds WB
1337 slli a2, a3, WSBITS
1338 or a3, a3, a2 # a2 = xxxwww1yyxxxwww1yy
1344 movi a2, (1 << (WSBITS-1))
1349 or a3, a3, a2 # 1yyxxxwww
1354 neg a2, a3
1355 and a3, a2, a3 # first bit set from right: 000010000
1357 ffs_ws a2, a3 # a2: shifts to skip empty frames
1359 sub a2, a3, a2 # WSBITS-a2:number of 0-bits from right
1360 ssr a2 # save in SAR for later.
1363 add a3, a3, a2
1364 rsr a2, DEPC # restore a2
1436 l32e a2, a5, -12
1437 s32e a8, a2, -48
1438 mov a8, a2
1536 * a2: new stack pointer, original in DEPC
1538 * depc: a2, original value saved on stack (PT_DEPC)
1549 s32i a1, a2, PT_AREG1
1567 GET_CURRENT(a1,a2)
1614 l32i a0, a2, PT_AREG0
1615 l32i a1, a2, PT_AREG1
1616 l32i a2, a2, PT_DEPC
1619 bgeui a2, VALID_DOUBLE_EXCEPTION_ADDRESS, 1f
1623 rsr a2, DEPC
1628 1: xsr a2, DEPC
1639 s32i a1, a2, PT_AREG2
1640 s32i a3, a2, PT_AREG3
1641 mov a1, a2
1643 rsr a2, PS
1644 bbsi.l a2, PS_UM_BIT, 1f
1658 * a2: new stack pointer, original in DEPC
1660 * depc: a2, original value saved on stack (PT_DEPC)
1671 s32i a1, a2, PT_AREG1
1672 s32i a4, a2, PT_AREG4
1674 GET_CURRENT(a1,a2)
1710 l32i a4, a2, PT_AREG4
1711 l32i a1, a2, PT_AREG1
1712 l32i a0, a2, PT_AREG0
1713 l32i a2, a2, PT_DEPC
1718 bgeui a2, VALID_DOUBLE_EXCEPTION_ADDRESS, 1f
1720 rsr a2, DEPC
1725 1: xsr a2, DEPC
1734 rsr a4, DEPC # still holds a2
1736 s32i a4, a2, PT_AREG2
1737 s32i a3, a2, PT_AREG3
1738 l32i a4, a2, PT_AREG4
1739 mov a1, a2
1741 rsr a2, PS
1742 bbsi.l a2, PS_UM_BIT, 1f
1756 * a2: new stack pointer, original in DEPC
1758 * depc: a2, original value saved on stack (PT_DEPC)
1774 l32i a0, a2, PT_DEPC
1780 s32i a3, a2, PT_AREG3
1782 s32i a4, a2, PT_AREG4
1783 s32i a1, a2, PT_AREG1
1785 s32i a3, a2, PT_SAR
1786 mov a1, a2
1790 * just save the remaining registers of a2...a15.
1839 addi a2, a4, THREAD_CP_SAVE
1840 add a2, a2, a5
1865 addi a2, a4, THREAD_CP_SAVE
1866 add a2, a2, a4
1871 * registers a2..a15.
1887 l32i a2, a1, PT_AREG2
1899 * a2 a3
1907 l32i a3, a2, PT_AREG2
1908 mov a6, a2
1910 s32i a3, a2, PT_SYSCALL
1927 l32i a6, a2, PT_AREG6
1928 l32i a7, a2, PT_AREG3
1929 l32i a8, a2, PT_AREG4
1930 l32i a9, a2, PT_AREG5
1931 l32i a10, a2, PT_AREG8
1932 l32i a11, a2, PT_AREG9
1935 s32i a2, a1, 0
1941 s32i a6, a2, PT_AREG2
1943 mov a6, a2
1952 * a2 a2 a3 a4
1958 mov a5, a2 # preserve fn over syscall
1962 movi a2, __NR_clone
1971 movi a2, __NR_exit
1981 * a2 a2 a3 a4
1986 mov a6, a2 # arg0 is in a6
1987 movi a2, __NR_execve
1996 * a2 a2 a3
2005 s32i a0, a2, THREAD_RA # save return address
2006 s32i a1, a2, THREAD_SP # save stack pointer