Lines Matching +full:a +full:- +full:f0 +full:- +full:9
1 /* SPDX-License-Identifier: GPL-2.0 */
5 * Kernel entry-points.
8 #include <asm/asm-offsets.h>
39 .size \func, . - \func
43 * This defines the normal kernel pt-regs layout.
45 * regs 9-15 preserved by C code
46 * regs 16-18 saved by PAL-code
47 * regs 29-30 saved and set up by PAL-code
48 * JRP - Save regs 16-18 in a special area of the stack, so that
49 * the palcode-provided values are available to the signal handler.
149 .cfi_adjust_cfa_offset -SP_OFF
155 .cfi_rel_offset $9, 0
167 .cfi_restore $9
174 .cfi_adjust_cfa_offset -SWITCH_STACK_SIZE
178 * Non-syscall kernel entry points.
201 /* save $9 - $15 so the inline exception code can manipulate them. */
204 stq $9, 0($sp)
211 .cfi_rel_offset $9, 0
224 ldq $9, 0($sp)
232 .cfi_restore $9
239 .cfi_adjust_cfa_offset -56
254 lda $sp, -256($sp)
265 bne $0, entUnaUser /* yup -> do user-level unaligned fault */
270 stq $9, 72($sp)
277 /* 16-18 PAL-saved */
298 .cfi_rel_offset $9, 9*8
329 ldq $9, 72($sp)
336 /* 16-18 PAL-saved */
357 .cfi_restore $9
375 .cfi_adjust_cfa_offset -256
384 .cfi_adjust_cfa_offset -256
386 lda $sp, -56($sp)
388 stq $9, 0($sp)
395 .cfi_rel_offset $9, 0
406 ldq $9, 0($sp)
414 .cfi_restore $9
421 .cfi_adjust_cfa_offset -56
436 * like a function call to userspace as far as clobbered registers. We
442 * Note that a0-a2 are not saved by PALcode as with the other entry points.
485 cmovne $26, 0, $18 /* $18 = 0 => non-restartable */
514 * frame to indicate that a negative return value wasn't an
539 * $18: The old syscall number, or zero if this is not a return
540 * from a syscall that errored and is possibly restartable.
622 mov $18, $9 /* save old syscall number */
625 mov $9, $18
634 * Save and restore the switch stack -- aka the balance of the user context.
644 lda $sp, -SWITCH_STACK_SIZE($sp)
646 stq $9, 0($sp)
654 stt $f0, 64($sp)
682 mf_fpcr $f0 # get fpcr
686 stt $f0, 312($sp) # save fpcr in slot of $f31
687 ldt $f0, 64($sp) # dont let "do_switch_stack" change fp state.
690 .size do_switch_stack, .-do_switch_stack
698 ldq $9, 0($sp)
707 ldt $f0, 64($sp)
742 .size undo_switch_stack, .-undo_switch_stack
761 .size alpha_switch_to, .-alpha_switch_to
777 * ... and new kernel threads - here
785 mov $9, $27
787 jsr $26, ($9)
821 lda $9, ret_from_straced
822 cmpult $26, $9, $9
823 lda $sp, -SWITCH_STACK_SIZE($sp)
825 bne $9, 1f
845 Store a non-zero there - -ENOSYS we need in register
848 lda $0, -ENOSYS