Lines Matching refs:of
6 * This file contains Original Code and/or Modifications of Original Code
10 * may not be used to create, or enable the creation or redistribution of,
11 * unlawful or unlicensed copies of an Apple operating system, or to
12 * circumvent, violate, or enable the circumvention or violation of, any
13 * terms of an Apple operating system software license agreement.
15 * Please obtain a copy of the License at
183 ; Preliminary checking of other MCKs
356 ; 0x20 - set if upper 29 bits of syscall number are 0xFFFFFFF8
357 ; 0x10 - set if upper 29 bits of syscall number are 0x00007FF0
358 ; 0x0E - low three bits of syscall number
359 ; 0x01 - zero, as scTable is an array of shorts
365 rlwinm r11,r0,0,0xFFFFFFF8 ; mask off low 3 bits of syscall number
376 rlwimi r11,r0,1,0xE ; move in low 3 bits of syscall number
552 * There is now a large gap of reserved traps
572 .long .L_exception_entry-EXT(ExceptionVectorsStart) /* phys addr of fn */
579 * index into the "scTable" (below), and then branches to one of these routines. The PPC
586 * One of these (0x6004) is a UFT, but most are dispatched in hw_exceptions.s. These
595 * 5. If (syscall & 0xFFFFF000) == 0xFFFFF000, and it is not one of the above, then it is a Mach
610 * 0x00006004 - vmm_dispatch (only some of which are UFTs)
612 * "scTable" is an array of 2-byte addresses, accessed using a 7-bit index derived from the syscall
617 * 0x20 (C) - set if upper 29 bits of syscall number are 0xFFFFFFF8
618 * 0x10 (D) - set if upper 29 bits of syscall number are 0x00007FF0
619 * 0x0E (E) - low three bits of syscall number
621 * If you define another UFT, try to use a number in one of the currently decoded ranges, ie one marked
622 * "unassigned" below. The dispatch table and the UFT handlers must reside in the first 32KB of
668 .short uftVMM-baseR ; 0100 4 0x6004 is vmm_dispatch (only some of which are UFTs)
787 ; Handle "vmm_dispatch" (0x6004), of which only some selectors are UFTs.
799 cror cr1_eq,cr5_lt,cr2_gt ; Set true if out of VMM Fast syscall range
800 bt-- cr1_eq,uftNormalFF ; Exit if out of range (the others are not UFTs)
801 b EXT(vmm_ufp) ; handle UFT range of vmm_dispatch syscall
927 lwz r21,traceStart(0) ; Get the start of trace table
928 lwz r22,traceEnd(0) ; Get end of trace table
974 stw r21,LTR_timeHi(r20) ; Save top of time stamp
978 stw r22,LTR_timeLo(r20) ; Save bottom of time stamp
1064 lwz r21,traceStart(0) ; Get the start of trace table
1065 lwz r22,traceEnd(0) ; Get end of trace table
1101 std r21,LTR_timeHi(r20) ; Save top of time stamp
1189 * Here we will save off a mess of registers, the special ones and R0-R12. We use the DCBZ
1284 ori r4,r4,lo16(MASK(MSR_VEC)|MASK(MSR_FP)|MASK(MSR_ME)) ; Rest of MSR
1313 stw r8,ruptStamp(r2) ; Save the top of time stamp
1314 stw r8,SAVtime(r13) ; Save the top of time stamp
1315 stw r7,ruptStamp+4(r2) ; Save the bottom of time stamp
1316 stw r7,SAVtime+4(r13) ; Save the bottom of time stamp
1328 lis r3,hi16(EXT(machine_idle_ret)) ; Get high part of nap/doze return
1335 ori r3,r3,lo16(EXT(machine_idle_ret)) ; Get low part of nap/doze return
1402 dcbz r10,r13 ; Clear first part of pmc area
1405 dcbz r10,r13 ; Clear second part of pmc area
1463 li r26,0x8 ; Get start of cpu mask
1464 srw r26,r26,r19 ; Get bit position of cpu number
1472 bne+ cr5,xcp32xit ; Skip all of this if no tracing here...
1480 lwz r25,traceStart(0) ; Get the start of trace table
1481 lwz r26,traceEnd(0) ; Get end of trace table
1509 lwz r16,ruptStamp(r2) ; Get top of time base
1510 lwz r17,ruptStamp+4(r2) ; Get the bottom of time stamp
1530 stw r16,LTR_timeHi(r20) ; Set the upper part of TB
1531 stw r17,LTR_timeLo(r20) ; Set the lower part of TB
1596 ori r1,r0,lo16(MASK(MSR_VEC)|MASK(MSR_FP)|MASK(MSR_ME)) ; Rest of MSR
1603 lis r1,0x00F0 ; Top half of xform XOR
1604 rlwinm r2,r11,29,27,31 ; Get high 5 bits of rupt code
1609 ori r1,r1,0x04EC ; Bottom half of xform XOR
1611 rlwinm r4,r11,1,27,28 ; Get bottom of interrupt code * 8
1613 srawi r0,r0,31 ; Get 0xFFFFFFFF of xform valid, 0 otherwise
1695 lis r3,hi16(EXT(machine_idle_ret)) ; Get high part of nap/doze return
1699 ori r3,r3,lo16(EXT(machine_idle_ret)) ; Get low part of nap/doze return
1794 li r26,0x8 ; Get start of cpu mask
1796 srw r26,r26,r19 ; Get bit position of cpu number
1801 bne++ cr5,xcp64xit ; Skip all of this if no tracing here...
1809 lwz r25,traceStart(0) ; Get the start of trace table
1810 lwz r26,traceEnd(0) ; Get end of trace table
1841 ld r16,ruptStamp(r2) ; Get top of time base
1843 std r16,LTR_timeHi(r20) ; Set the upper part of TB
1896 ; All of the context is saved. Now we will get a
1948 ; We are now done saving all of the context. Start filtering the interrupts.
1950 ; Note also that we take a lot of system calls so we will start decode here.
1958 lwz r20,lo16(xcpTable)(r11) ; Get the interrupt handler (note: xcpTable must be in 1st 32k of physical memory)
1966 xori r24,r22,1 ; Get the NOT of the redrive
1968 mtcrf 0x80,r0 ; Set our CR0 to the high nybble of possible syscall code
1979 ; Exception vector filter table (like everything in this file, must be in 1st 32KB of physical memory)
2061 bnl++ cr0,PassUp ; R0 not 0b10xxx...x, can not be any kind of magical system call, just pass it up...
2326 ; context has been saved. The new savearea is in kind of hokey, the high order
2377 bge- PassUpTrap ; Outside of range
2378 blt- cr1,PassUpTrap ; Outside of range
2382 ; fix up to return directly to caller of probe.
2439 li r9,0 ; Get and AND mask of 0
2526 rlwinm. r0,r20,0,mckIFUE-32,mckIFUE-32 ; Is this some kind of uncorrectable?
2529 rlwinm. r0,r20,0,mckLDST-32,mckLDST-32 ; Some kind of load/store error?
2553 la r3,emvr0(r2) ; Use this to keep track of valid ESIDs we find
2556 mckSLBck: la r4,emvr0(r2) ; Use this to keep track of valid ESIDs we find
2561 mckSLBck2: cmpld r4,r3 ; Have we reached the end of the table?
2570 cmplwi r5,64 ; Have we checked all of them?
2580 mckSLBrec: li r0,0 ; Set an SLB slot index of 0
2797 lis r8,hi16(EXT(ml_probe_read_64)) ; High of start
2798 lis r9,hi16(EXT(ml_probe_read_mck_64)) ; High of end
2799 ori r8,r8,lo16(EXT(ml_probe_read_64)) ; Low of start
2800 ori r9,r9,lo16(EXT(ml_probe_read_mck_64)) ; Low of end
2833 beq++ EatRupt ; No log of recoverables wanted...
2845 ; If it is, we need to populate the current savearea with some of the context from
2847 ; tossed as part of the pass up code. Additionally, because we will not be nullifying
2855 lwz r4,ijsave+4(r2) ; And get the bottom of the inject savearea pointer
2857 rlwinm r3,r3,0,1,0 ; Copy low 32 bits of to top 32
2860 rlwimi. r3,r4,0,0,31 ; Insert low part of 64-bit address in bottom 32 bits and see if ijsave is 0
2867 lis r5,hi16(ijtrap) ; Get high half of inject exit trap
2873 lwz r5,savesrr0+4(r3) ; And the rest of it
2876 lwz r4,savesrr1+4(r13) ; Get the bottom of the new SRR1
2877 lwz r7,savesrr1+4(r3) ; Get the bottom of the original SRR1
2879 stw r5,savesrr0+4(r13) ; Set the new bottom of SRR0 to the original
2881 stw r6,savesrr1(r13) ; Save the top half of the original SRR1
2964 lwz r4,ijsave+4(r29) ; And get the bottom of the inject savearea pointer
2966 rlwimi. r3,r4,0,0,31 ; Insert low part of 64-bit address in bottom 32 bits and see if ijsave is 0
2973 lwz r6,savedar(r13) ; Get the top of the DAR
2975 lwz r7,savedar+4(r13) ; Get the bottom of the DAR
2982 stw r6,savedar(r13) ; Save top of new DAR
2983 stw r7,savedar+4(r13) ; Save bottom of new DAR
2998 andc r5,r13,r0 ; Back off to the start of savearea block
3007 xor r4,r13,r5 ; Pass up the virtual address of context savearea
3008 rlwinm r4,r4,0,0,31 ; Clean top half of virtual savearea if 64-bit
3028 * that were released as part of the exception exit path in hw_exceptions.
3042 * is any tomfoolery with savearea stacks, it must be taken care of
3050 mr r31,r13 ; Move the savearea pointer to the far end of the register set
3055 bt++ pf64Bitb,eat64a ; Skip down to the 64-bit version of this
3089 ; savearea to the head of the local list. Then, if it needs to trim, it will
3120 ori r26,r26,lo16(EXT(ijcode)) ; Get the base of the inject buffer for this processor (always < 64K)
3175 xori r8,r8,lo16(ijemoff) ; Turn off all of the need-to-be-off bits
3240 la r26,saver0(r26) ; Point to the first part of the next savearea
3361 ; savearea to the head of the local list. Then, if it needs to trim, it will
3395 ori r26,r26,lo16(EXT(ijcode)) ; Get the base of the inject buffer for this processor (always < 64K)
3443 xori r8,r8,lo16(ijemoff) ; Turn off all of the need-to-be-off bits
3495 la r26,saver0(r26) ; Point to the first part of the next savearea
3569 * R3 points to the virtual address of a savearea
3586 ori r30,r30,lo16(MASK(MSR_VEC)|MASK(MSR_FP)|MASK(MSR_ME)) ; Rest of MSR
3702 .long 0 ; 5088 Start of the trace table
3703 .long 0 ; 508C End (wrap point) of the trace
3705 .long 0 ; 5094 Size of trace table (1 - 256 pages)