Lines Matching refs:is
36 * handler since the state save routine is different for each. The
37 * code is very similar (a lot of cut and paste).
39 * The code for the FPU disabled handler (lazy fpu) is in cswtch.s
69 * Everything is saved in savearea
73 * If pcb.ksp == 0 then the kernel stack is already busy,
82 * on return, we do the reverse, the last state is popped from the pcb
83 * and pcb.ksp is set to the top of stack
86 /* TRAP_SPACE_NEEDED is the space assumed free on the kernel stack when
87 * another trap is taken. We need at least enough space for a saved state
142 bne-- kernelStackUnaligned ; Stack is unaligned...
145 bgt-- cr2,kernelStackBad ; Kernel stack is bogus...
155 * which links back to the trapped routine. The second is
202 crnor cr7_eq,cr0_eq,cr2_gt ; We should intercept if in VM and is a true trap (cr7_eq == 1 if yes)
239 * This is also the point where new threads come when they are created.
240 * The new thread is setup to look like a thread that took an
265 ; Here is where we go when we detect that the kernel stack is all messed up.
275 blt+ cr2,kernelStackNotBad ; Yeah, that is ok too...
296 * Everything is saved in savearea
300 * If pcb.ksp == 0 then the kernel stack is already busy,
301 * this is an error - jump to the debugger entry
307 * on return, we do the reverse, the state is popped from the pcb
308 * and pcb.ksp is set to the top of stack.
360 beql fastpath ; We think it is a fastpath...
407 * which links back to the trapped routine. The second is
423 oris r15,r15,SAVsyscall >> 16 ; Mark that it this is a syscall
426 beq-- cr6,exitFromVM ; It is time to exit from alternate context...
430 mr. r0,r0 ; What kind is it?
433 blt-- .L_kernel_syscall ; System call number if negative, this is a mach call...
465 * saved state is still in R30 and the active thread is in R16 .
475 ; It is up to the callee to enable interruptions if
480 ; Also, the callee is responsible for finding any parameters
485 ; 0 the call is disabled or something, we treat this like it was bogus
489 ; Note: the last option is intended for special diagnostics calls that
512 mr. r11,r11 ; See if there is a function here
543 * when kdebug tracing is enabled
553 bge- .L_call_server_syscall_exception ; The syscall number is invalid
618 bge-- .L_call_server_syscall_exception ; The syscall number is invalid
650 * saved state is still in R30 and the active thread is in R16
691 /* Yes there is, call ast_taken
735 cmpw cr0,r27,r28 ; Check if this is an invalid system call
799 /* Yes there is, call ast_taken
851 ; This is where we handle someone trying who did a thread_create followed
884 * Everything is saved in savearea
933 blt+ ihsetback ; The stack is ok...
939 blt+ cr2,ihsetback ; Yeah, that is ok too...
955 rlwinm. r0,r1,0,28,31 ; Check if stack is aligned (and get 0)
957 bne-- intUnalignedStk ; Stack is unaligned...
964 * the stack is marked as busy. We now generate a small
981 * which links back to the trapped routine. The second is
1053 * Check for ASTs if one of the below is true:
1063 bne .L_no_int_ast ; Do not preempt if level is not zero
1078 * There is a pending AST. Massage things to make it look like
1102 ; This section is common to all exception exits. It throws away vector
1103 ; and floating point saveareas as the exception level of a thread is
1106 ; It also enables the facility if its context is live
1113 ; Note that barring unforseen crashes, there is no escape from this point
1118 ; so it will indicate the current, or the deferred it it is set and we
1138 crnor cr2_eq,cr0_eq,cr2_eq ; Set cr2_eq if going to user state and there is deferred
1155 #error per_proc_entry is not 16bytes in size
1178 ; Now if there is a savearea associated with the popped context, release it.
1189 bne fpusetlvl ; No, leave as is...
1223 ; Therefore, we will use the defer level if it is non-zero and we are
1344 ; Now if there is a savearea associated with the popped context, release it.
1355 bne vmxsetlvl ; No, leave as is...
1477 bne chkifuser ; If high order is non-zero, this is too big for a decrementer
1576 * Set's thread state "user_value". In practice this is the thread-local-data-pointer (TLDP),
1577 * though we do not interpret it. This call is mostly used by 32-bit tasks, but we save all 64 bits
1581 * This op is invoked as follows:
1589 lwz r5,saver3+4(r4) /* (all 64 bits, in case this is a 64-bit task) */
1629 ; Here is where we exit from the emulated context
1667 ; Here is the system choke handler. This is where the system goes
1670 ; We get here as a result of a T_CHOKE exception which is generated
1672 ; fatal error. Examples of where this may be used is when we detect
1713 cmplwi r11,KERNEL_STACK_SIZE-FM_SIZE-TRAP_SPACE_NEEDED ; Check if stack pointer is ok
1748 ;; This code is broken and migration will make the matter even worse
1777 li r21,SAVgeneral ; (TEST/DEBUG) Make sure this is all general context
1781 li r21,SAVfloat ; (TEST/DEBUG) Make sure this is all floating point
1785 li r21,SAVvector ; (TEST/DEBUG) Make sure this is all vector
1805 li r21,SAVfloat ; (TEST/DEBUG) Make sure this is all floating point
1809 li r21,SAVvector ; (TEST/DEBUG) Make sure this is all vector
1820 beq+ versvok ; (TEST/DEBUG) This one is ok...