Lines Matching +full:out +full:- +full:of +full:- +full:window
1 /* SPDX-License-Identifier: GPL-2.0 */
3 * wof.S: Sparc window overflow handler.
20 * of register windows to the user and kernel. If you touch
21 * this code be _very_ careful as many other pieces of the
29 * accessed when in the 'trap' window, 'G' means
30 * accessible in any window. Do not change these registers
43 #define twin_tmp l4 /* Temp reg, only usable in trap window T */
48 /* BEGINNING OF PATCH INSTRUCTIONS */
49 /* On a 7-window Sparc the boot code patches spnwin_*
56 /* END OF PATCH INSTRUCTIONS */
66 /* Datum current_thread_info->uwinmask contains at all times a bitmask
74 /* LOCATION: Trap Window */
80 * window properly in this trap handler.
82 * newwim = ((%wim>>1) | (%wim<<(nwindows - 1)));
91 * Get the load of 'curptr' out of the way.
105 /* Save into the window which must be saved and do it.
110 save %g0, %g0, %g0 ! save into the window to stash away
114 /* LOCATION: Window to be saved */
116 STORE_WINDOW(sp) ! stash the window
117 restore %g0, %g0, %g0 ! go back into trap window
119 /* LOCATION: Trap window */
128 /* LOCATION: Trap window */
132 * are approaching the infamous register window trap handling
135 * Note that how the execution path works out, the new %wim
138 * need to save into the appropriate window without inducing
140 * But first, store the new user window mask calculated
147 /* LOCATION: Window to be saved */
150 /* LOCATION: Window to be saved */
153 * to validity of the users stack pointer by whatever means
165 * care of things at that point.
171 /* LOCATION: Window to be saved */
179 restore %g0, %g0, %g0 /* Back to trap window. */
181 /* LOCATION: Trap window */
184 * the appropriate window onto the stack.
197 /* LOCATION: Window to be saved */
201 * or not. If we came from kernel mode, toss the window into
202 * a special buffer and proceed, the kernel _needs_ a window
205 * c-code to gun down the process.
212 /* Oh well, throw this one window into the per-task window
219 /* LOCATION: Trap Window */
221 /* Back in the trap window, update winbuffer save count. */
225 /* Compute new user window mask. What we are basically
229 * window. umask = ((~(%t_wim | %wim)) & valid_wim_bits)
237 #define STACK_OFFSET (THREAD_SIZE - TRACEREG_SZ - STACKFRAME_SZ)
252 /* Turn on traps and call c-code to deal with it. */
258 /* Return from trap if C-code actually fixes things, if it
260 * be given the look of death from Commander Peanut.
266 /* LOCATION: Window to be saved */
268 /* The kernel provoked a spill window trap, but the window we
271 * a per-process window buffer until we can properly handle
277 /* LOCATION: Trap window */
281 * to kernel mode is not necessarily these days. ;-)
295 * make usage of glob_tmp and t_psr so we leave them defined.
305 /* Now come the per-architecture window overflow stack checking routines.
315 /* LOCATION: Window to be saved on the stack */
317 /* Because of SMP concerns and speed we play a trick.
328 /* Check results of callers andcc %sp, 0x7, %g0 */