Annotation of kernel/machdep/ppc/genassym.c, revision 1.1.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.