Lines Matching +full:1 +full:br +full:- +full:10
1 /* SPDX-License-Identifier: GPL-2.0 */
5 * Kernel entry-points.
8 #include <asm/asm-offsets.h>
35 .size \func, . - \func
39 * This defines the normal kernel pt-regs layout.
41 * regs 9-15 preserved by C code
42 * regs 16-18 saved by PAL-code
43 * regs 29-30 saved and set up by PAL-code
44 * JRP - Save regs 16-18 in a special area of the stack, so that
45 * the palcode-provided values are available to the signal handler.
52 stq $1, 8($sp)
58 .cfi_rel_offset $1, 8
100 ldq $1, 8($sp)
127 .cfi_restore $1
145 .cfi_adjust_cfa_offset -SP_OFF
149 bsr $1, do_switch_stack
152 .cfi_rel_offset $10, 8
161 bsr $1, undo_switch_stack
163 .cfi_restore $10
169 .cfi_adjust_cfa_offset -SWITCH_STACK_SIZE
173 * Non-syscall kernel entry points.
196 /* save $9 - $15 so the inline exception code can manipulate them. */
200 stq $10, 8($sp)
207 .cfi_rel_offset $10, 8
220 ldq $10, 8($sp)
228 .cfi_restore $10
234 .cfi_adjust_cfa_offset -64
236 br ret_from_sys_call
249 lda $sp, -256($sp)
255 stq $1, 8($sp)
260 bne $0, entUnaUser /* yup -> do user-level unaligned fault */
266 stq $10, 80($sp)
272 /* 16-18 PAL-saved */
285 .cfi_rel_offset $1, 1*8
294 .cfi_rel_offset $10, 10*8
316 ldq $1, 8($sp)
325 ldq $10, 80($sp)
331 /* 16-18 PAL-saved */
344 .cfi_restore $1
353 .cfi_restore $10
370 .cfi_adjust_cfa_offset -256
379 .cfi_adjust_cfa_offset -256
381 lda $sp, -64($sp)
384 stq $10, 8($sp)
391 .cfi_rel_offset $10, 8
402 ldq $10, 8($sp)
410 .cfi_restore $10
416 .cfi_adjust_cfa_offset -64
417 br ret_from_sys_call
437 * Note that a0-a2 are not saved by PALcode as with the other entry points.
471 beq $4, 1f
473 1: jsr $26, ($27), sys_ni_syscall
483 cmovne $26, 0, $18 /* $18 = 0 => non-restartable */
508 br restore_other
524 addq $31, 1, $1 /* set a3 for errno return */
527 stq $1, 72($sp) /* a3 for return */
528 br ret_from_sys_call
555 br ret_to_user
562 br restore_all
573 ldl $1, TI_STATUS($8)
574 and $1, TS_SAVED_FP, $3
575 or $1, TS_SAVED_FP, $2
576 bne $3, 1f
579 1:
593 lda $1, NR_syscalls($31)
596 cmpult $0, $1, $1
598 beq $1, 1f
600 1: jsr $26, ($27), sys_gettimeofday
613 br $31, ret_from_sys_call
622 addq $31, 1, $1 /* set a3 for errno return */
624 stq $1, 72($sp) /* a3 for return */
628 mov $19, $10 /* save old a3 */
631 mov $10, $19
635 br ret_from_sys_call
639 * Save and restore the switch stack -- aka the balance of the user context.
647 .cfi_register 64, $1
649 lda $sp, -SWITCH_STACK_SIZE($sp)
652 stq $10, 8($sp)
659 ret $31, ($1), 1
661 .size do_switch_stack, .-do_switch_stack
667 .cfi_register 64, $1
670 ldq $10, 8($sp)
678 ret $31, ($1), 1
680 .size undo_switch_stack, .-undo_switch_stack
688 V( 0); V( 1); V( 2); V( 3)
690 V( 8); V( 9); V(10); V(11)
701 .size __save_fpu, .-__save_fpu
707 beq $3, 1f
710 V( 0); V( 1); V( 2); V( 3)
713 V( 8); V( 9); V(10); V(11)
719 1: stl $2, TI_STATUS($8)
720 br restore_other
733 ldl $1, TI_STATUS($8)
734 and $1, TS_RESTORE_FP, $3
735 bne $3, 1f
736 or $1, TS_RESTORE_FP | TS_SAVED_FP, $2
737 and $1, TS_SAVED_FP, $3
739 bne $3, 1f
741 1:
749 .size alpha_switch_to, .-alpha_switch_to
765 * ... and new kernel threads - here
774 mov $10, $16
776 br $31, ret_to_user
791 bsr $1, do_switch_stack
793 ldl $1, TI_STATUS($8)
794 and $1, TS_SAVED_FP, $3
795 or $1, TS_SAVED_FP, $2
796 bne $3, 1f
799 1:
820 lda $sp, -SWITCH_STACK_SIZE($sp)
822 bne $9, 1f
824 1: br $1, undo_switch_stack
825 br ret_from_sys_call
842 Store a non-zero there - -ENOSYS we need in register
845 lda $0, -ENOSYS