Lines Matching full:a0
111 * a0: trashed, original value saved on stack (PT_AREG0)
123 * a0-a3 and depc have been saved to PT_AREG0...PT_AREG3 and PT_DEPC
135 rsr a0, depc
137 s32i a0, a2, PT_AREG2
208 ffs_ws a0, a3 # number of frames to the '1' from left
215 slli a3, a0, 4 # number of frames to save in bits 8..4
223 s32i a0, a5, PT_AREG_END - 16
227 addi a0, a4, -1
229 _bnez a0, 1b
258 * a0: trashed, original value saved on stack (PT_AREG0)
270 * a0-a3 and depc have been saved to PT_AREG0...PT_AREG3 and PT_DEPC
281 rsr a0, depc # get a2
283 s32i a0, a2, PT_AREG2
329 /* Copy spill slots of a0 and a1 to imitate movsp
333 l32i a0, a1, PT_SIZE + 4
335 s32e a0, a1, -12
337 l32i a0, a1, PT_AREG0 # restore saved a0
338 wsr a0, depc
386 rsr a0, excsave1
388 s32i a3, a0, EXC_TABLE_FIXUP
407 movi a0, EXCCAUSE_MAPPED_NMI
409 beq a2, a0, .Lmedium_level_irq
414 rsr a0, excsave2
415 s32i a0, a1, PT_PS # save medium-level interrupt ps
422 movi a0, PS_WOE_MASK
423 or a3, a3, a0
426 movi a0, LOCKLEVEL
429 moveqz a3, a0, a2 # a3 = LOCKLEVEL iff interrupt
436 rsr a0, depc
597 /* The working registers are a0 and a3. We are restoring to
607 2: rotw -1 # a0..a3 become a4..a7
618 1: rsr a0, windowbase
620 sub a3, a0, a3
683 addi a0, a3, -1
684 and a3, a3, a0
687 /* Do a movsp (we returned from a call4, so we have at least a0..a7) */
689 addi a0, a1, -16
690 l32i a3, a0, 0
691 l32i a4, a0, 4
694 l32i a3, a0, 8
695 l32i a4, a0, 12
752 l32i a0, a1, PT_DEPC
755 _bgeui a0, VALID_DOUBLE_EXCEPTION_ADDRESS, 1f
757 /* Restore a0...a3 and return */
759 l32i a0, a1, PT_AREG0
763 1: wsr a0, depc
764 l32i a0, a1, PT_AREG0
775 * When we get here, a0 is trashed and saved to excsave[debuglevel]
782 rsr a0, SREG_EPS + XCHAL_DEBUGLEVEL
783 bbsi.l a0, PS_EXCM_BIT, 1f # exception mode
797 or a2, a0, a2
800 /* Switch to kernel/user stack, restore jump vector, and save a0 */
806 l32i a0, a3, DT_DEBUG_SAVE
808 s32i a0, a2, PT_AREG0
809 movi a0, 0
810 s32i a0, a2, PT_DEPC # mark it as a regular exception
812 xsr a0, depc
814 s32i a0, a2, PT_AREG2
845 bbci.l a0, PS_UM_BIT, 1b # jump if kernel mode
847 rsr a0, debugcause
848 bbsi.l a0, DEBUGCAUSE_DBREAK_BIT, .Ldebug_save_dbreak
852 l32i a0, a3, DT_DBREAKC_SAVE + _index * 4
853 wsr a0, SREG_DBREAKC + _index
857 l32i a0, a3, DT_ICOUNT_LEVEL_SAVE
858 wsr a0, icountlevel
860 l32i a0, a3, DT_ICOUNT_SAVE
861 xsr a0, icount
863 l32i a0, a3, DT_DEBUG_SAVE
870 movi a0, 0
871 xsr a0, SREG_DBREAKC + _index
872 s32i a0, a3, DT_DBREAKC_SAVE + _index * 4
876 movi a0, XCHAL_EXCM_LEVEL + 1
877 xsr a0, icountlevel
878 s32i a0, a3, DT_ICOUNT_LEVEL_SAVE
880 movi a0, 0xfffffffe
881 xsr a0, icount
882 s32i a0, a3, DT_ICOUNT_SAVE
884 l32i a0, a3, DT_DEBUG_SAVE
902 * - a0 contains the caller address; original value saved in excsave1.
903 * - the original a0 contains a valid return address (backtrace) or 0.
923 movi a0, 1
926 wsr a0, windowstart
935 movi a0, 0
979 * a0: trashed, original value saved on stack (PT_AREG0)
991 rsr a0, windowbase
1024 * a0: trashed, original value saved on stack (PT_AREG0)
1034 rsr a0, ps
1035 bbsi.l a0, PS_WOE_BIT, 1f
1038 or a0, a0, a3
1039 wsr a0, ps
1041 l32i a0, a2, PT_AREG0
1061 * a0: trashed, original value saved on stack (PT_AREG0)
1073 rsr a0, epc1
1074 addi a0, a0, 3
1075 wsr a0, epc1
1077 l32i a0, a2, PT_DEPC
1078 bgeui a0, VALID_DOUBLE_EXCEPTION_ADDRESS, fast_syscall_unrecoverable
1080 rsr a0, depc # get syscall-nr
1081 _beqz a0, fast_syscall_spill_registers
1082 _beqi a0, __NR_xtensa, fast_syscall_xtensa
1092 l32i a0, a2, PT_AREG0 # restore a0
1095 wsr a0, excsave1
1111 * a0: a2 (syscall-nr), original value saved on stack (PT_AREG0)
1113 * a2: new stack pointer, original in a0 and DEPC
1133 access_ok a3, a7, a0, a2, .Leac # a0: scratch reg, a2: sp
1142 EX(.Leac) l32i a0, a3, 0 # read old value
1143 bne a0, a4, 1f # same as old value? jump
1146 l32i a0, a2, PT_AREG0 # restore a0
1151 l32i a0, a2, PT_AREG0 # restore a0
1159 add a0, a4, a7 # + arg
1160 moveqz a0, a4, a6 # set
1162 EX(.Leac) s32i a0, a3, 0 # write new value
1164 mov a0, a2
1166 l32i a7, a0, PT_AREG7 # restore a7
1167 l32i a0, a0, PT_AREG0 # restore a0
1171 l32i a0, a2, PT_AREG0 # restore a0
1176 l32i a0, a2, PT_AREG0 # restore a0
1186 l32i a0, a2, PT_AREG0 # restore a0
1199 * a0: trashed, original value saved on stack (PT_AREG0)
1216 movi a0, fast_syscall_spill_registers_fixup
1217 s32i a0, a3, EXC_TABLE_FIXUP
1218 rsr a0, windowbase
1219 s32i a0, a3, EXC_TABLE_PARAM
1224 rsr a0, sar
1226 s32i a0, a2, PT_SAR
1243 rsr a0, windowbase
1245 ssr a0 # holds WB
1246 slli a0, a3, WSBITS
1247 or a3, a3, a0 # a3 = xxxwww1yyxxxwww1yy
1253 movi a0, (1 << (WSBITS-1))
1258 or a3, a3, a0 # 1yyxxxwww
1263 neg a0, a3
1264 and a3, a0, a3 # first bit set from right: 000010000
1266 ffs_ws a0, a3 # a0: shifts to skip empty frames
1268 sub a0, a3, a0 # WSBITS-a0:number of 0-bits from right
1269 ssr a0 # save in SAR for later.
1272 add a3, a3, a0
1319 l32e a0, a5, -12
1320 s32e a8, a0, -48
1321 mov a8, a0
1337 * s32e a0, a13, -16
1371 l32i a0, a2, PT_AREG0
1394 movi a0, 1
1397 wsr a0, windowstart
1401 movi a0, 0
1415 wsr a0, excsave1
1435 * a0: value of depc, original value in depc
1443 xsr a0, depc # restore depc and a0
1446 /* We need to make sure the current registers (a0-a3) are preserved.
1473 * a0, a1, a2 same
1483 * a0: return address
1495 s32i a0, a2, PT_AREG0
1505 rsr a0, exccause
1506 addx4 a0, a0, a3 # find entry in table
1507 l32i a0, a0, EXC_TABLE_FAST_USER # load handler
1509 jx a0
1547 l32i a0, a2, PT_AREG0 # restore a0
1577 * a0: trashed, original value saved on stack (PT_AREG0)
1612 l32i a0, a1, TASK_MM # tsk->mm
1613 beqz a0, 9f
1616 _PGD_OFFSET(a0, a3, a1)
1617 l32i a0, a0, 0 # read pmdval
1618 beqz a0, 2f
1635 add a0, a0, a1 # pmdval - PAGE_OFFSET
1636 extui a1, a0, 0, PAGE_SHIFT # ... & PAGE_MASK
1637 xor a0, a0, a1
1640 or a0, a0, a1 # ... | PAGE_DIRECTORY
1661 3: wdtlb a0, a1
1667 movi a0, 0
1668 s32i a0, a3, EXC_TABLE_FIXUP
1672 l32i a0, a2, PT_AREG0
1690 9: l32i a0, a1, TASK_ACTIVE_MM # unlikely case mm == 0
1691 bnez a0, 8b
1697 movi a0, init_mm
1711 l32i a0, a2, PT_DEPC
1712 bgeui a0, VALID_DOUBLE_EXCEPTION_ADDRESS, 2f
1716 movi a0, __tlbtemp_mapping_start
1718 bltu a3, a0, 2f
1719 movi a0, __tlbtemp_mapping_end
1720 bgeu a3, a0, 2f
1725 rsr a0, excvaddr
1726 bltu a0, a3, 2f
1728 addi a1, a0, -TLBTEMP_SIZE
1740 and a1, a1, a0
1748 extui a3, a0, PAGE_SHIFT + DCACHE_ALIAS_ORDER, 1
1753 mov a0, a6
1754 movnez a0, a7, a3
1787 * a0: trashed, original value saved on stack (PT_AREG0)
1806 l32i a0, a1, TASK_MM # tsk->mm
1807 beqz a0, 9f
1810 _PGD_OFFSET(a0, a1, a3)
1811 l32i a0, a0, 0
1812 beqz a0, 2f
1819 _PTE_OFFSET(a0, a1, a3)
1820 l32i a3, a0, 0 # read pteval
1828 s32i a3, a0, 0
1832 dhwb a0, 0
1834 pdtlb a0, a1
1835 wdtlb a3, a0
1839 movi a0, 0
1841 s32i a0, a3, EXC_TABLE_FIXUP
1847 l32i a0, a2, PT_AREG0
1861 9: l32i a0, a1, TASK_ACTIVE_MM # unlikely case mm == 0
1960 addi a12, a0, 3
1964 mov a12, a0
2002 s32i a0, a10, THREAD_RA - TASK_THREAD # save return address
2005 s32i a0, a2, THREAD_RA # save return address
2050 l32i a0, a11, THREAD_RA # restore return address