Annotation of kernel/machdep/ppc/genassym.c, revision 1.1

1.1     ! root        1: /*
        !             2:  * Copyright (c) 1999 Apple Computer, Inc. All rights reserved.
        !             3:  *
        !             4:  * @APPLE_LICENSE_HEADER_START@
        !             5:  * 
        !             6:  * Portions Copyright (c) 1999 Apple Computer, Inc.  All Rights
        !             7:  * Reserved.  This file contains Original Code and/or Modifications of
        !             8:  * Original Code as defined in and that are subject to the Apple Public
        !             9:  * Source License Version 1.1 (the "License").  You may not use this file
        !            10:  * except in compliance with the License.  Please obtain a copy of the
        !            11:  * License at http://www.apple.com/publicsource and read it before using
        !            12:  * this file.
        !            13:  * 
        !            14:  * The Original Code and all software distributed under the License are
        !            15:  * distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY KIND, EITHER
        !            16:  * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,
        !            17:  * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,
        !            18:  * FITNESS FOR A PARTICULAR PURPOSE OR NON-INFRINGEMENT.  Please see the
        !            19:  * License for the specific language governing rights and limitations
        !            20:  * under the License.
        !            21:  * 
        !            22:  * @APPLE_LICENSE_HEADER_END@
        !            23:  */
        !            24: 
        !            25: /*
        !            26:  * genassym.c is used to produce an
        !            27:  * assembly file which, intermingled with unuseful assembly code,
        !            28:  * has all the necessary definitions emitted. This assembly file is
        !            29:  * then postprocessed with sed to extract only these definitions
        !            30:  * and thus the final assyms.s is created.
        !            31:  *
        !            32:  * This convoluted means is necessary since the structure alignment
        !            33:  * and packing may be different between the host machine and the
        !            34:  * target so we are forced into using the cross compiler to generate
        !            35:  * the values, but we cannot run anything on the target machine.
        !            36:  */
        !            37: #include <mach/machine/thread_status.h>
        !            38: #include <stddef.h>
        !            39: #include <sys/types.h>
        !            40: #include <kern/thread.h>
        !            41: #include <kern/host.h>
        !            42: #include <mach/machine/thread_status.h>
        !            43: #include <machdep/ppc/frame.h>
        !            44: #include <machdep/ppc/exception.h>
        !            45: #include <kern/syscall_sw.h>
        !            46: #include <machdep/ppc/PseudoKernel.h>
        !            47: 
        !            48: #ifdef notdef_next
        !            49: #define offsetof(TYPE, MEMBER) ((size_t) &((TYPE)0)->MEMBER)
        !            50: 
        !            51: #define DECLARE(SYM,VAL) \
        !            52:        __asm("#define\t" SYM "\t%0" : : "n" ((u_int)(VAL)))
        !            53: 
        !            54: void main(void)
        !            55: {
        !            56: #endif /* notdef_next */
        !            57: 
        !            58:        /* Process Control Block */
        !            59: 
        !            60:        int _PCB_FLOAT_STATE =  offsetof(struct pcb, fs);
        !            61: 
        !            62:        /* Floating point state */
        !            63: 
        !            64:        int _PCB_FS_F0 =        offsetof(struct pcb, fs.fpregs[0]);
        !            65:        int _PCB_FS_F1 =        offsetof(struct pcb, fs.fpregs[1]);
        !            66:        int _PCB_FS_F2 =        offsetof(struct pcb, fs.fpregs[2]);
        !            67:        int _PCB_FS_F3 =        offsetof(struct pcb, fs.fpregs[3]);
        !            68:        int _PCB_FS_F4 =        offsetof(struct pcb, fs.fpregs[4]);
        !            69:        int _PCB_FS_F5 =        offsetof(struct pcb, fs.fpregs[5]);
        !            70:        int _PCB_FS_F6 =        offsetof(struct pcb, fs.fpregs[6]);
        !            71:        int _PCB_FS_F7 =        offsetof(struct pcb, fs.fpregs[7]);
        !            72:        int _PCB_FS_F8 =        offsetof(struct pcb, fs.fpregs[8]);
        !            73:        int _PCB_FS_F9 =        offsetof(struct pcb, fs.fpregs[9]);
        !            74:        int _PCB_FS_F10 =       offsetof(struct pcb, fs.fpregs[10]);
        !            75:        int _PCB_FS_F11 =       offsetof(struct pcb, fs.fpregs[11]);
        !            76:        int _PCB_FS_F12 =       offsetof(struct pcb, fs.fpregs[12]);
        !            77:        int _PCB_FS_F13 =       offsetof(struct pcb, fs.fpregs[13]);
        !            78:        int _PCB_FS_F14 =       offsetof(struct pcb, fs.fpregs[14]);
        !            79:        int _PCB_FS_F15 =       offsetof(struct pcb, fs.fpregs[15]);
        !            80:        int _PCB_FS_F16 =       offsetof(struct pcb, fs.fpregs[16]);
        !            81:        int _PCB_FS_F17 =       offsetof(struct pcb, fs.fpregs[17]);
        !            82:        int _PCB_FS_F18 =       offsetof(struct pcb, fs.fpregs[18]);
        !            83:        int _PCB_FS_F19 =       offsetof(struct pcb, fs.fpregs[19]);
        !            84:        int _PCB_FS_F20 =       offsetof(struct pcb, fs.fpregs[20]);
        !            85:        int _PCB_FS_F21 =       offsetof(struct pcb, fs.fpregs[21]);
        !            86:        int _PCB_FS_F22 =       offsetof(struct pcb, fs.fpregs[22]);
        !            87:        int _PCB_FS_F23 =       offsetof(struct pcb, fs.fpregs[23]);
        !            88:        int _PCB_FS_F24 =       offsetof(struct pcb, fs.fpregs[24]);
        !            89:        int _PCB_FS_F25 =       offsetof(struct pcb, fs.fpregs[25]);
        !            90:        int _PCB_FS_F26 =       offsetof(struct pcb, fs.fpregs[26]);
        !            91:        int _PCB_FS_F27 =       offsetof(struct pcb, fs.fpregs[27]);
        !            92:        int _PCB_FS_F28 =       offsetof(struct pcb, fs.fpregs[28]);
        !            93:        int _PCB_FS_F29 =       offsetof(struct pcb, fs.fpregs[29]);
        !            94:        int _PCB_FS_F30 =       offsetof(struct pcb, fs.fpregs[30]);
        !            95:        int _PCB_FS_F31 =       offsetof(struct pcb, fs.fpregs[31]);
        !            96:        int _PCB_FS_FPSCR =     offsetof(struct pcb, fs.fpscr_pad);
        !            97: 
        !            98: 
        !            99:        int _PCB_SAVED_STATE =offsetof(struct pcb, ss);
        !           100:        int _PCB_KSP =  offsetof(struct pcb, ksp);
        !           101:        int _PCB_SR0 =  offsetof(struct pcb, sr0);
        !           102: 
        !           103:        int _PCB_SIZE = sizeof(struct pcb);
        !           104: 
        !           105:        /* Save State Structure */
        !           106:        int _SS_R0 =    offsetof(struct ppc_saved_state, r0);
        !           107:        int _SS_R1 =    offsetof(struct ppc_saved_state, r1);
        !           108:        int _SS_R2 =    offsetof(struct ppc_saved_state, r2);
        !           109:        int _SS_R3 =    offsetof(struct ppc_saved_state, r3);
        !           110:        int _SS_R4 =    offsetof(struct ppc_saved_state, r4);
        !           111:        int _SS_R5 =    offsetof(struct ppc_saved_state, r5);
        !           112:        int _SS_R6 =    offsetof(struct ppc_saved_state, r6);
        !           113:        int _SS_R7 =    offsetof(struct ppc_saved_state, r7);
        !           114:        int _SS_R8 =    offsetof(struct ppc_saved_state, r8);
        !           115:        int _SS_R9 =    offsetof(struct ppc_saved_state, r9);
        !           116:        int _SS_R10 =   offsetof(struct ppc_saved_state, r10);
        !           117:        int _SS_R11 =   offsetof(struct ppc_saved_state, r11);
        !           118:        int _SS_R12 =   offsetof(struct ppc_saved_state, r12);
        !           119:        int _SS_R13 =   offsetof(struct ppc_saved_state, r13);
        !           120:        int _SS_R14 =   offsetof(struct ppc_saved_state, r14);
        !           121:        int _SS_R15 =   offsetof(struct ppc_saved_state, r15);
        !           122:        int _SS_R16 =   offsetof(struct ppc_saved_state, r16);
        !           123:        int _SS_R17 =   offsetof(struct ppc_saved_state, r17);
        !           124:        int _SS_R18 =   offsetof(struct ppc_saved_state, r18);
        !           125:        int _SS_R19 =   offsetof(struct ppc_saved_state, r19);
        !           126:        int _SS_R20 =   offsetof(struct ppc_saved_state, r20);
        !           127:        int _SS_R21 =   offsetof(struct ppc_saved_state, r21);
        !           128:        int _SS_R22 =   offsetof(struct ppc_saved_state, r22);
        !           129:        int _SS_R23 =   offsetof(struct ppc_saved_state, r23);
        !           130:        int _SS_R24 =   offsetof(struct ppc_saved_state, r24);
        !           131:        int _SS_R25 =   offsetof(struct ppc_saved_state, r25);
        !           132:        int _SS_R26 =   offsetof(struct ppc_saved_state, r26);
        !           133:        int _SS_R27 =   offsetof(struct ppc_saved_state, r27);
        !           134:        int _SS_R28 =   offsetof(struct ppc_saved_state, r28);
        !           135:        int _SS_R29 =   offsetof(struct ppc_saved_state, r29);
        !           136:        int _SS_R30 =   offsetof(struct ppc_saved_state, r30);
        !           137:        int _SS_R31 =   offsetof(struct ppc_saved_state, r31);
        !           138:        int _SS_CR =    offsetof(struct ppc_saved_state, cr);
        !           139:        int _SS_XER =   offsetof(struct ppc_saved_state, xer);
        !           140:        int _SS_LR =    offsetof(struct ppc_saved_state, lr);
        !           141:        int _SS_CTR =   offsetof(struct ppc_saved_state, ctr);
        !           142:        int _SS_SRR0 =  offsetof(struct ppc_saved_state, srr0);
        !           143:        int _SS_SRR1 =  offsetof(struct ppc_saved_state, srr1);
        !           144:        int _SS_MQ =    offsetof(struct ppc_saved_state, mq);
        !           145:        int _SS_SR_COPYIN =     offsetof(struct ppc_saved_state, sr_copyin);
        !           146:        int _CTHREAD_SELF =     offsetof(struct pcb, cthread_self);
        !           147:        int _PCB_FLAGS = offsetof(struct pcb, flags);
        !           148:        int _SS_SIZE = sizeof(struct ppc_saved_state);
        !           149: 
        !           150:        /* Exception State structure */
        !           151:        int _PCB_ES_DAR =       offsetof(struct pcb, es.dar);
        !           152:        int _PCB_ES_DSISR =     offsetof(struct pcb, es.dsisr);
        !           153: 
        !           154:        /* Per Proc info structure */
        !           155:        int _PP_SAVE_CR = offsetof(struct per_proc_info, save_cr);
        !           156:        int _PP_SAVE_LR = offsetof(struct per_proc_info, save_lr);
        !           157:        int _PP_SAVE_SRR0 = offsetof(struct per_proc_info, save_srr0);
        !           158:        int _PP_SAVE_SRR1 = offsetof(struct per_proc_info, save_srr1);
        !           159:        int _PP_SAVE_DAR = offsetof(struct per_proc_info, save_dar);
        !           160:        int _PP_SAVE_DSISR = offsetof(struct per_proc_info, save_dsisr);
        !           161:        int _PP_SAVE_SPRG0 = offsetof(struct per_proc_info, save_sprg0);
        !           162:        int _PP_SAVE_SPRG1 = offsetof(struct per_proc_info, save_sprg1);
        !           163:        int _PP_SAVE_SPRG2 = offsetof(struct per_proc_info, save_sprg2);
        !           164:        int _PP_SAVE_SPRG3 = offsetof(struct per_proc_info, save_sprg3);
        !           165: 
        !           166:        int _PP_SAVE_R0    = offsetof(struct per_proc_info, save_r0);
        !           167:        int _PP_SAVE_R1    = offsetof(struct per_proc_info, save_r1);
        !           168:        int _PP_SAVE_R2    = offsetof(struct per_proc_info, save_r2);
        !           169:        int _PP_SAVE_R3    = offsetof(struct per_proc_info, save_r3);
        !           170:        int _PP_SAVE_R4    = offsetof(struct per_proc_info, save_r4);
        !           171:        int _PP_SAVE_R5    = offsetof(struct per_proc_info, save_r5);
        !           172:        int _PP_SAVE_R6    = offsetof(struct per_proc_info, save_r6);
        !           173:        int _PP_SAVE_R7    = offsetof(struct per_proc_info, save_r7);
        !           174:        int _PP_SAVE_R8    = offsetof(struct per_proc_info, save_r8);
        !           175:        int _PP_SAVE_R9    = offsetof(struct per_proc_info, save_r9);
        !           176:        int _PP_SAVE_R10   = offsetof(struct per_proc_info, save_r10);
        !           177:        int _PP_SAVE_R11   = offsetof(struct per_proc_info, save_r11);
        !           178:        int _PP_SAVE_R12   = offsetof(struct per_proc_info, save_r12);
        !           179: 
        !           180:        int _PP_SAVE_EXCEPTION_TYPE = 
        !           181:                        offsetof(struct per_proc_info, save_exception_type);
        !           182:        int _PP_CPU_DATA = offsetof(struct per_proc_info, cpu_data);
        !           183:        int _PP_PHYS_EXCEPTION_HANDLERS =
        !           184:                offsetof(struct per_proc_info, phys_exception_handlers);
        !           185:        int _PP_VIRT_PER_PROC =
        !           186:                offsetof(struct per_proc_info, virt_per_proc_info);
        !           187: #ifdef notdef_next
        !           188:        int _PP_ACTIVE_KLOADED =
        !           189:                offsetof(struct per_proc_info, active_kloaded);
        !           190: #endif /* notdef_next */
        !           191:        int _PP_ACTIVE_STACKS =
        !           192:                offsetof(struct per_proc_info, active_stacks);
        !           193:        int _PP_NEED_AST =
        !           194:                offsetof(struct per_proc_info, need_ast);
        !           195:        int _PP_FPU_PCB =
        !           196:                offsetof(struct per_proc_info, fpu_pcb);
        !           197: 
        !           198:        /* Kernel State Structure - special case as we want offset from
        !           199:         * bottom of kernel stack, not offset into structure
        !           200:         */
        !           201: #define IKSBASE (u_int)STACK_IKS(0)
        !           202: 
        !           203:        int _KS_PCB = IKSBASE + offsetof(struct ppc_kernel_state, pcb);
        !           204:        int _KS_R1 =  IKSBASE + offsetof(struct ppc_kernel_state, r1);
        !           205:        int _KS_R2 =  IKSBASE + offsetof(struct ppc_kernel_state, r2);
        !           206:        int _KS_R13 = IKSBASE + offsetof(struct ppc_kernel_state, r13);
        !           207:        int _KS_LR =  IKSBASE + offsetof(struct ppc_kernel_state, lr);
        !           208:        int _KS_CR =  IKSBASE + offsetof(struct ppc_kernel_state, cr);
        !           209:        int _KS_SIZE = sizeof(struct ppc_kernel_state);
        !           210:        int _KSTK_SIZE = KERNEL_STACK_SIZE;
        !           211: 
        !           212:        /* values from kern/thread.h */
        !           213:        int _THREAD_PCB = offsetof(struct thread, pcb);
        !           214:        int _THREAD_KERNEL_STACK = offsetof(struct thread, kernel_stack);
        !           215:        int _THREAD_SWAPFUNC = offsetof(struct thread, swap_func);
        !           216:        int _THREAD_RECOVER = offsetof(struct thread, recover);
        !           217:        int _THREAD_TASK = offsetof(struct thread, task);
        !           218:        int _THREAD_AST = offsetof(struct thread, ast);
        !           219: #ifdef notdef_next
        !           220:        DECLARE("THREAD_TOP_ACT",
        !           221:                offsetof(struct thread_shuttle *, top_act));
        !           222:        DECLARE("THREAD_CONTINUATION",
        !           223:                offsetof(struct thread_shuttle *, continuation));
        !           224: 
        !           225:        /* values from kern/thread_act.h */
        !           226:        DECLARE("ACT_TASK",    offsetof(struct thread_activation *, task));
        !           227:        DECLARE("ACT_MACT_PCB",offsetof(struct thread_activation *, mact.pcb));
        !           228:        DECLARE("ACT_AST",     offsetof(struct thread_activation *, ast));
        !           229:        DECLARE("ACT_VMMAP",   offsetof(struct thread_activation *, map));
        !           230:        DECLARE("ACT_KLOADED",
        !           231:                offsetof(struct thread_activation *, kernel_loaded));
        !           232:        DECLARE("ACT_KLOADING",
        !           233:                offsetof(struct thread_activation *, kernel_loading));
        !           234:        DECLARE("ACT_MACH_EXC_PORT",
        !           235:                offsetof(struct thread_activation *,
        !           236:                exc_actions[EXC_MACH_SYSCALL].port));
        !           237: #endif
        !           238: 
        !           239:        /* values from kern/task.h */
        !           240: #ifdef notdef_next
        !           241:        DECLARE("TASK_MACH_EXC_PORT",
        !           242:                offsetof(struct task *, exc_actions[EXC_MACH_SYSCALL].port));
        !           243: #else /* notdef_next */
        !           244:        int _TASK_VMMAP = offsetof(struct task, map);
        !           245:        int _TASK_MACH_EXC_PORT = offsetof(struct task, itk_exception);
        !           246: #endif /* notdef_next */
        !           247: 
        !           248:        /* values from vm/vm_map.h */
        !           249:        int _VMMAP_PMAP = offsetof(struct vm_map, pmap);
        !           250: 
        !           251:        /* values from machine/pmap.h */
        !           252:        int _PMAP_SPACE = offsetof(struct pmap, space);
        !           253: 
        !           254: #ifdef notdef_next
        !           255:        /* Constants from pmap.h */
        !           256:        DECLARE("PPC_SID_KERNEL", PPC_SID_KERNEL);
        !           257: #endif /* notdef_next */
        !           258: 
        !           259:        /* values for accessing mach_trap table */
        !           260:        int _MACH_TRAP_OFFSET_POW2 = 4;
        !           261: 
        !           262:        int _MACH_TRAP_ARGC =
        !           263:                offsetof(mach_trap_t, mach_trap_arg_count);
        !           264:        int _MACH_TRAP_FUNCTION =
        !           265:                offsetof(mach_trap_t, mach_trap_function);
        !           266: 
        !           267:        int _HOST_SELF = offsetof(struct host, host_self);
        !           268: 
        !           269:        /* values from cpu_data.h */
        !           270:        int _CPU_ACTIVE_THREAD = offsetof(cpu_data_t, active_thread);
        !           271:        int _CPU_FLAGS = offsetof(cpu_data_t, flags);
        !           272: 
        !           273: #ifdef notdef_next
        !           274:        /* Misc values used by assembler */
        !           275:        int _AST_ALL = 0;
        !           276: }
        !           277: #endif /* notdef_next */
        !           278: 
        !           279: 
        !           280:        /* Frame Structure */
        !           281:        int _FM_SIZE    =       sizeof(struct frame_area);
        !           282: 
        !           283: //     int _NARGS      =       (sizeof(struct param_area)/ sizeof(int));
        !           284: 
        !           285: //     int _MAXREGARGS =       (sizeof(struct reg_param_area)/ sizeof(int));
        !           286: 
        !           287:        int _ARG_SIZE   =       sizeof(struct stack_param_area);
        !           288: 
        !           289:        int _LA_SIZE    =       sizeof(struct linkage_area);
        !           290:        int _FM_BACKPTR =       offsetof(struct stack_frame, la.saved_sp);
        !           291:        int _FM_CR_SAVE =       offsetof(struct stack_frame, la.saved_cr);
        !           292:        int _FM_LR_SAVE =       offsetof(struct stack_frame, la.saved_lr);
        !           293:        int _FM_TOC_SAVE=       offsetof(struct stack_frame, la.saved_r2);
        !           294: 
        !           295:        int _RPA_SIZE   =       sizeof(struct reg_param_area);
        !           296:        int _SPA_SIZE   =       sizeof(struct stack_param_area);
        !           297: 
        !           298:        int _FM_ARG0    =       offsetof(struct stack_frame, pa.spa.saved_p8);
        !           299: 
        !           300:        int _FM_REDZONE =       sizeof (struct redzone);
        !           301: 
        !           302: 
        !           303:        /* CallPseudoKernel info */
        !           304:        int _CPKD_PC                    = offsetof(CPKD_t, pc);
        !           305:        int _CPKD_GPR0                  = offsetof(CPKD_t, gpr0);
        !           306:        int _CPKD_INTCONTROLADDR        = offsetof(CPKD_t, intControlAddr);
        !           307:        int _CPKD_NEWSTATE              = offsetof(CPKD_t, newState);
        !           308:        int _CPKD_INTSTATEMASK          = offsetof(CPKD_t, intStateMask);
        !           309:        int _CPKD_INTCR2MASK            = offsetof(CPKD_t, intCR2Mask);
        !           310:        int _CPKD_INTCR2SHIFT           = offsetof(CPKD_t, intCR2Shift);
        !           311:        int _CPKD_SYSCONTEXTSTATE       = offsetof(CPKD_t, sysContextState);
        !           312: 
        !           313: 
        !           314:        /* ExitPseudoKernel info */
        !           315:        int _EPKD_PC                    = offsetof(EPKD_t, pc);
        !           316:        int _EPKD_SP                    = offsetof(EPKD_t, sp);
        !           317:        int _EPKD_GPR0                  = offsetof(EPKD_t, gpr0);
        !           318:        int _EPKD_GPR3                  = offsetof(EPKD_t, gpr3);
        !           319:        int _EPKD_CR                    = offsetof(EPKD_t, cr);
        !           320:        int _EPKD_INTCONTROLADDR        = offsetof(EPKD_t, intControlAddr);
        !           321:        int _EPKD_NEWSTATE              = offsetof(EPKD_t, newState);
        !           322:        int _EPKD_INTSTATEMASK          = offsetof(EPKD_t, intStateMask);
        !           323:        int _EPKD_INTCR2MASK            = offsetof(EPKD_t, intCR2Mask);
        !           324:        int _EPKD_INTCR2SHIFT           = offsetof(EPKD_t, intCR2Shift);
        !           325:        int _EPKD_SYSCONTEXTSTATE       = offsetof(EPKD_t, sysContextState);
        !           326:        int _EPKD_INTPENDINGMASK        = offsetof(EPKD_t, intPendingMask);
        !           327:        int _EPKD_INTPENDINGPC          = offsetof(EPKD_t, intPendingPC);
        !           328:        int _EPKD_MSRUPDATE             = offsetof(EPKD_t, msrUpdate);
        !           329:        

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.