Lines Matching refs:the
4 * The contents of this file are subject to the terms of the
5 * Common Development and Distribution License (the "License").
6 * You may not use this file except in compliance with the License.
8 * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
10 * See the License for the specific language governing permissions
11 * and limitations under the License.
14 * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
15 * If applicable, add the following below this CDDL HEADER, with the
28 * It is the intent of this file to contain routines that are
29 * independent of the specific kernel architecture, and those that are
32 * architecture-dependent routines change, the routines should be moved
33 * from this file into the respective ../`arch -k`/subr.s file.
35 * name has something to do with the routine you are moving.
107 * Macro to set the priority to a specified level.
108 * Avoid dropping the priority below CPU->cpu_base_spl.
111 * the new PIL in the PSR_PIL field of the level arg.
125 * Macro to set the priority to a specified level at or above LOCK_LEVEL.
129 * the new PIL in the PSR_PIL field of the level arg.
145 * Note, for the machine specific priorities there are
149 * the current devices fit into the priority scheme based
153 * SPARC9 IPL 10 is the highest level from which a device
157 * level (via software interrupt) to do the required
172 * mnemonic) will do a RAISE(), on the assumption that they are
177 * priority, to allow the PROM to poll the uart.
198 /* just below the level that profiling runs */
230 * splx - set PIL back to that indicated by the old %pil passed as an argument,
231 * or to the CPU's base priority, whichever is higher.
254 * splr is like splx but will only raise the priority and never drop it
256 * even though it seems we're raising the priority, it could be set higher
295 b setjmp ! let setjmp do the rest
303 b longjmp ! let longjmp do the rest
333 * the trap code will complete trap processing but reset the return %pc to
334 * ot_trampoline, which will by default be set to the address of this code.
354 * Push a new element on to the t_ontrap stack. Refer to <sys/ontrap.h> for
355 * more information about the on_trap() mechanism. If the on_trap_data is the
356 * same as the topmost stack element, we just modify that element.
387 0: b setjmp ! let setjmp do the rest
431 ! within the same window, that window will not get pushed
432 ! out onto the stack without the extra save below. Tail call
434 ! from a window that could be the same as the setjmp,
435 ! thus the need for the following save.
512 btst %o3, %g1 ! apply the mask
543 * if a() calls callee(), callee() returns the
563 * return the current frame pointer
603 * PSTATE.PEF, because PSTATE.PEF is always on in order to allow the
604 * libc_psr memcpy routines to run without hitting the fp_disabled trap.
720 * Returns the number of non-NULL bytes in string argument.
722 * XXX - why is this here, rather than the traditional file?
756 tst %o4 ! is the first byte zero
760 1: andcc %o3, 0xff, %o3 ! is the second byte zero
771 ! the following two constants will generate "byte carries"
788 ! check for the zero byte and increment the count appropriately
789 ! some information (the carry bit) is lost if bit 31
790 ! was set (very rare), if this is the rare condition,
791 ! return to the main loop again
822 * Provide a C callable interface to the membar instruction.
1019 * Since all of the fuword() variants are so similar, we have a macro to spit
1083 * Since all of the suword() variants are so similar, we have a macro to spit
1277 * We define rdtick here, but not for sun4v. On sun4v systems, the %tick
1278 * and %stick should not be read directly without considering the tick
1469 * %g5 saved %cwp (so we can get back to the original window)
1488 mov %o0, %g1 ! we need the pcstack pointer while
1501 rdpr %cwp, %g5 ! remember the register window state
1508 restore ! go to the next frame
1509 subcc %g2, 1, %g2 ! decrement the count
1513 mov %i6, %g3 ! copy the final %fp and return PC
1517 wrpr %g0, %g5, %cwp ! jump back to the original window
1518 wrpr %g0, %o1, %cansave ! and restore the original register
1521 stn %g3, [%o2] ! store the frame pointer and pc
1522 st %g4, [%o3] ! so our caller can continue the trace
1573 * once. We atomically store 0xFF into the high byte and load the old value.
1574 * If the byte was 0xFF, the trigger has already been activated and we fail.
1575 * If the previous value was 0 or not 0xFF, we succeed. This allows a
1615 * into the panic code implemented in panicsys(). vpanic() is responsible
1616 * for passing through the format string and arguments, and constructing a
1617 * regs structure on the stack into which it saves the current register
1619 * then be preserved in panicbuf as the current processor state. Before
1620 * invoking panicsys(), vpanic() activates the first panic trigger (see
1621 * common/os/panic.c) and switches to the panic_stack if successful. Note that
1624 * sets up the initial stack as vpanic does, calls dtrace_panic_trigger(), and
1643 ! to store the %ccr, %asi, %pstate, and %cwp as they would appear
1644 ! in %tstate if a trap occurred. We leave it up to the debugger to
1645 ! realize what happened and extract the register values.
1679 ! If panic_trigger() was successful, we are the first to initiate a
1680 ! panic: switch to the panic_stack.
1690 ! designated location in the regs structure allocated on the stack.
1691 ! The register set we store is the equivalent of the registers at
1692 ! the time the %pc was pointing to vpanic, thus the %i's now contain
1693 ! what the %o's contained prior to the save instruction.
1731 ! to store the %ccr, %asi, %pstate, and %cwp as they would appear
1732 ! in %tstate if a trap occurred. We leave it up to the debugger to
1733 ! realize what happened and extract the register values.