Annotation of kernel/machdep/i386/idt.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:  * Copyright (c) 1992 NeXT Computer, Inc.
                     27:  *
                     28:  * Intel386 Family:    Interrupt descriptor table.
                     29:  *
                     30:  * HISTORY
                     31:  *
                     32:  * 3 April 1992 ? at NeXT
                     33:  *     Created.
                     34:  */
                     35: 
                     36: #import <mach/mach_types.h>
                     37: 
                     38: #import <architecture/i386/table.h>
                     39: 
                     40: #import <machdep/i386/idt.h>
                     41: #import <machdep/i386/desc_inline.h>
                     42: 
                     43: extern trp_divr(), trp_debg(), int__nmi(), trp_brpt(); 
                     44: extern trp_over(), flt_bnds(), flt_opcd(), flt_ncpr(); 
                     45: extern abt_dblf(), abt_over(), flt_btss(), flt_bseg();
                     46: extern flt_bstk(), flt_prot(), trp_0x0F(), flt_page();
                     47: extern flt_bcpr(), trp_0x11(), trp_0x12(), trp_0x13();
                     48: extern trp_0x14(), trp_0x15(), trp_0x16(), trp_0x17();
                     49: extern trp_0x18(), trp_0x19(), trp_0x1A(), trp_0x1B();
                     50: extern trp_0x1C(), trp_0x1D(), trp_0x1E(), trp_0x1F();
                     51: extern trp_0x20(), trp_0x21(), trp_0x22(), trp_0x23();
                     52: extern trp_0x24(), trp_0x25(), trp_0x26(), trp_0x27();
                     53: extern trp_0x28(), trp_0x29(), trp_0x2A(), trp_0x2B();
                     54: extern trp_0x2C(), trp_0x2D(), trp_0x2E(), trp_0x2F();
                     55: extern trp_0x30(), trp_0x31(), trp_0x32(), trp_0x33();
                     56: extern trp_0x34(), trp_0x35(), trp_0x36(), trp_0x37();
                     57: extern trp_0x38(), trp_0x39(), trp_0x3A(), trp_0x3B();
                     58: extern trp_0x3C(), trp_0x3D(), trp_0x3E(), trp_0x3F();
                     59: 
                     60: extern int_0x40(), int_0x41(), int_0x42(), int_0x43();
                     61: extern int_0x44(), int_0x45(), int_0x46(), int_0x47();
                     62: extern int_0x48(), int_0x49(), int_0x4A(), int_0x4B();
                     63: extern int_0x4C(), int_0x4D(), int_0x4E(), int_0x4F();
                     64: extern int_0x50(), int_0x51(), int_0x52(), int_0x53();
                     65: extern int_0x54(), int_0x55(), int_0x56(), int_0x57();
                     66: extern int_0x58(), int_0x59(), int_0x5A(), int_0x5B();
                     67: extern int_0x5C(), int_0x5D(), int_0x5E(), int_0x5F();
                     68: extern int_0x60(), int_0x61(), int_0x62(), int_0x63();
                     69: extern int_0x64(), int_0x65(), int_0x66(), int_0x67();
                     70: extern int_0x68(), int_0x69(), int_0x6A(), int_0x6B();
                     71: extern int_0x6C(), int_0x6D(), int_0x6E(), int_0x6F();
                     72: extern int_0x70(), int_0x71(), int_0x72(), int_0x73();
                     73: extern int_0x74(), int_0x75(), int_0x76(), int_0x77();
                     74: extern int_0x78(), int_0x79(), int_0x7A(), int_0x7B();
                     75: extern int_0x7C(), int_0x7D(), int_0x7E(), int_0x7F();
                     76: extern int_0x80(), int_0x81(), int_0x82(), int_0x83();
                     77: extern int_0x84(), int_0x85(), int_0x86(), int_0x87();
                     78: extern int_0x88(), int_0x89(), int_0x8A(), int_0x8B();
                     79: extern int_0x8C(), int_0x8D(), int_0x8E(), int_0x8F();
                     80: extern int_0x90(), int_0x91(), int_0x92(), int_0x93();
                     81: extern int_0x94(), int_0x95(), int_0x96(), int_0x97();
                     82: extern int_0x98(), int_0x99(), int_0x9A(), int_0x9B();
                     83: extern int_0x9C(), int_0x9D(), int_0x9E(), int_0x9F();
                     84: extern int_0xA0(), int_0xA1(), int_0xA2(), int_0xA3();
                     85: extern int_0xA4(), int_0xA5(), int_0xA6(), int_0xA7();
                     86: extern int_0xA8(), int_0xA9(), int_0xAA(), int_0xAB();
                     87: extern int_0xAC(), int_0xAD(), int_0xAE(), int_0xAF();
                     88: extern int_0xB0(), int_0xB1(), int_0xB2(), int_0xB3();
                     89: extern int_0xB4(), int_0xB5(), int_0xB6(), int_0xB7();
                     90: extern int_0xB8(), int_0xB9(), int_0xBA(), int_0xBB();
                     91: extern int_0xBC(), int_0xBD(), int_0xBE(), int_0xBF();
                     92: extern int_0xC0(), int_0xC1(), int_0xC2(), int_0xC3();
                     93: extern int_0xC4(), int_0xC5(), int_0xC6(), int_0xC7();
                     94: extern int_0xC8(), int_0xC9(), int_0xCA(), int_0xCB();
                     95: extern int_0xCC(), int_0xCD(), int_0xCE(), int_0xCF();
                     96: extern int_0xD0(), int_0xD1(), int_0xD2(), int_0xD3();
                     97: extern int_0xD4(), int_0xD5(), int_0xD6(), int_0xD7();
                     98: extern int_0xD8(), int_0xD9(), int_0xDA(), int_0xDB();
                     99: extern int_0xDC(), int_0xDD(), int_0xDE(), int_0xDF();
                    100: extern int_0xE0(), int_0xE1(), int_0xE2(), int_0xE3();
                    101: extern int_0xE4(), int_0xE5(), int_0xE6(), int_0xE7();
                    102: extern int_0xE8(), int_0xE9(), int_0xEA(), int_0xEB();
                    103: extern int_0xEC(), int_0xED(), int_0xEE(), int_0xEF();
                    104: extern int_0xF0(), int_0xF1(), int_0xF2(), int_0xF3();
                    105: extern int_0xF4(), int_0xF5(), int_0xF6(), int_0xF7();
                    106: extern int_0xF8(), int_0xF9(), int_0xFA(), int_0xFB();
                    107: extern int_0xFC(), int_0xFD(), int_0xFE(), int_0xFF();
                    108: 
                    109: void
                    110: locate_idt(
                    111:     vm_offset_t                base
                    112: )
                    113: {
                    114:     extern
                    115:        unsigned int    idt_base;
                    116:     extern
                    117:        unsigned short  idt_limit;
                    118:        
                    119:     idt_base = base;
                    120:     idt_limit = (IDTSZ * sizeof (idt_entry_t)) - 1;
                    121:     
                    122:     asm volatile("lidt %0"
                    123:                    :
                    124:                    : "m" (idt_limit));
                    125: }
                    126: 
                    127: 
                    128: typedef struct {
                    129:     vm_offset_t                offset;
                    130:     sel_t              seg;
                    131:     unsigned short     type    :5,
                    132:                        dpl     :2,
                    133:                                :9;
                    134: } idt_pseudo_entry_t;
                    135: 
                    136: idt_pseudo_entry_t     idt_pseudo[];
                    137: 
                    138: void
                    139: idt_init(void)
                    140: {
                    141:     idt_pseudo_entry_t tmp;
                    142:     int                        i;
                    143: 
                    144:     for (i = 0; i < IDTSZ; i++) {
                    145:        tmp = idt_pseudo[i];
                    146:        if (tmp.type == DESC_TRAP_GATE)
                    147:            make_trap_gate((trap_gate_t *)&idt[i],
                    148:                                            tmp.seg,
                    149:                                            tmp.offset,
                    150:                                            tmp.dpl);
                    151:        else
                    152:        if (tmp.type == DESC_INTR_GATE)
                    153:            make_intr_gate((intr_gate_t *)&idt[i],
                    154:                                            tmp.seg,
                    155:                                            tmp.offset,
                    156:                                            tmp.dpl);
                    157:        else
                    158:        if (tmp.type == DESC_TASK_GATE)
                    159:            make_task_gate((task_gate_t *)&idt[i],
                    160:                                            tmp.seg,
                    161:                                            tmp.offset,
                    162:                                            tmp.dpl);
                    163:     }
                    164:     
                    165:     locate_idt((vm_offset_t) idt);
                    166: }
                    167: 
                    168: #define IPE(o, t, p)   \
                    169:     { (vm_offset_t)(o), KCS_SEL, (t), (p) }
                    170: 
                    171: #define TG     DESC_TRAP_GATE
                    172: #define IG     DESC_INTR_GATE
                    173: #define K      KERN_PRIV
                    174: #define U      USER_PRIV
                    175: 
                    176: idt_pseudo_entry_t     idt_pseudo[IDTSZ] = {
                    177:     IPE(trp_divr,      TG, K),
                    178:     IPE(trp_debg,      IG, K),
                    179:     IPE(int__nmi,      IG, K),
                    180:     IPE(trp_brpt,      TG, U),
                    181:     IPE(trp_over,      TG, U),
                    182:     IPE(flt_bnds,      TG, U),
                    183:     IPE(flt_opcd,      TG, K),
                    184:     IPE(flt_ncpr,      TG, K),
                    185:     IPE(abt_dblf,      TG, K),
                    186:     IPE(abt_over,      TG, K),
                    187:     IPE(flt_btss,      TG, K),
                    188:     IPE(flt_bseg,      TG, K),
                    189:     IPE(flt_bstk,      TG, K),
                    190:     IPE(flt_prot,      TG, K),
                    191:     IPE(flt_page,      TG, K),
                    192:     IPE(trp_0x0F,      TG, K),
                    193:     IPE(flt_bcpr,      TG, K),
                    194:     IPE(trp_0x11,      TG, K),
                    195:     IPE(trp_0x12,      TG, K),
                    196:     IPE(trp_0x13,      TG, K),
                    197:     IPE(trp_0x14,      TG, K),
                    198:     IPE(trp_0x15,      TG, K),
                    199:     IPE(trp_0x16,      TG, K),
                    200:     IPE(trp_0x17,      TG, K),
                    201:     IPE(trp_0x18,      TG, K),
                    202:     IPE(trp_0x19,      TG, K),
                    203:     IPE(trp_0x1A,      TG, K),
                    204:     IPE(trp_0x1B,      TG, K),
                    205:     IPE(trp_0x1C,      TG, K),
                    206:     IPE(trp_0x1D,      TG, K),
                    207:     IPE(trp_0x1E,      TG, K),
                    208:     IPE(trp_0x1F,      TG, K),
                    209:     IPE(trp_0x20,      TG, K),
                    210:     IPE(trp_0x21,      TG, K),
                    211:     IPE(trp_0x22,      TG, K),
                    212:     IPE(trp_0x23,      TG, K),
                    213:     IPE(trp_0x24,      TG, K),
                    214:     IPE(trp_0x25,      TG, K),
                    215:     IPE(trp_0x26,      TG, K),
                    216:     IPE(trp_0x27,      TG, K),
                    217:     IPE(trp_0x28,      TG, K),
                    218:     IPE(trp_0x29,      TG, K),
                    219:     IPE(trp_0x2A,      TG, K),
                    220:     IPE(trp_0x2B,      TG, K),
                    221:     IPE(trp_0x2C,      TG, K),
                    222:     IPE(trp_0x2D,      TG, K),
                    223:     IPE(trp_0x2E,      TG, K),
                    224:     IPE(trp_0x2F,      TG, K),
                    225:     IPE(trp_0x30,      TG, K),
                    226:     IPE(trp_0x31,      TG, K),
                    227:     IPE(trp_0x32,      TG, K),
                    228:     IPE(trp_0x33,      TG, K),
                    229:     IPE(trp_0x34,      TG, K),
                    230:     IPE(trp_0x35,      TG, K),
                    231:     IPE(trp_0x36,      TG, K),
                    232:     IPE(trp_0x37,      TG, K),
                    233:     IPE(trp_0x38,      TG, K),
                    234:     IPE(trp_0x39,      TG, K),
                    235:     IPE(trp_0x3A,      TG, K),
                    236:     IPE(trp_0x3B,      TG, K),
                    237:     IPE(trp_0x3C,      TG, K),
                    238:     IPE(trp_0x3D,      TG, K),
                    239:     IPE(trp_0x3E,      TG, K),
                    240:     IPE(trp_0x3F,      TG, K),
                    241: 
                    242:     IPE(int_0x40,      IG, K),
                    243:     IPE(int_0x41,      IG, K),
                    244:     IPE(int_0x42,      IG, K),
                    245:     IPE(int_0x43,      IG, K),
                    246:     IPE(int_0x44,      IG, K),
                    247:     IPE(int_0x45,      IG, K),
                    248:     IPE(int_0x46,      IG, K),
                    249:     IPE(int_0x47,      IG, K),
                    250:     IPE(int_0x48,      IG, K),
                    251:     IPE(int_0x49,      IG, K),
                    252:     IPE(int_0x4A,      IG, K),
                    253:     IPE(int_0x4B,      IG, K),
                    254:     IPE(int_0x4C,      IG, K),
                    255:     IPE(int_0x4D,      IG, K),
                    256:     IPE(int_0x4E,      IG, K),
                    257:     IPE(int_0x4F,      IG, K),
                    258:     IPE(int_0x50,      IG, K),
                    259:     IPE(int_0x51,      IG, K),
                    260:     IPE(int_0x52,      IG, K),
                    261:     IPE(int_0x53,      IG, K),
                    262:     IPE(int_0x54,      IG, K),
                    263:     IPE(int_0x55,      IG, K),
                    264:     IPE(int_0x56,      IG, K),
                    265:     IPE(int_0x57,      IG, K),
                    266:     IPE(int_0x58,      IG, K),
                    267:     IPE(int_0x59,      IG, K),
                    268:     IPE(int_0x5A,      IG, K),
                    269:     IPE(int_0x5B,      IG, K),
                    270:     IPE(int_0x5C,      IG, K),
                    271:     IPE(int_0x5D,      IG, K),
                    272:     IPE(int_0x5E,      IG, K),
                    273:     IPE(int_0x5F,      IG, K),
                    274:     IPE(int_0x60,      IG, K),
                    275:     IPE(int_0x61,      IG, K),
                    276:     IPE(int_0x62,      IG, K),
                    277:     IPE(int_0x63,      IG, K),
                    278:     IPE(int_0x64,      IG, K),
                    279:     IPE(int_0x65,      IG, K),
                    280:     IPE(int_0x66,      IG, K),
                    281:     IPE(int_0x67,      IG, K),
                    282:     IPE(int_0x68,      IG, K),
                    283:     IPE(int_0x69,      IG, K),
                    284:     IPE(int_0x6A,      IG, K),
                    285:     IPE(int_0x6B,      IG, K),
                    286:     IPE(int_0x6C,      IG, K),
                    287:     IPE(int_0x6D,      IG, K),
                    288:     IPE(int_0x6E,      IG, K),
                    289:     IPE(int_0x6F,      IG, K),
                    290:     IPE(int_0x70,      IG, K),
                    291:     IPE(int_0x71,      IG, K),
                    292:     IPE(int_0x72,      IG, K),
                    293:     IPE(int_0x73,      IG, K),
                    294:     IPE(int_0x74,      IG, K),
                    295:     IPE(int_0x75,      IG, K),
                    296:     IPE(int_0x76,      IG, K),
                    297:     IPE(int_0x77,      IG, K),
                    298:     IPE(int_0x78,      IG, K),
                    299:     IPE(int_0x79,      IG, K),
                    300:     IPE(int_0x7A,      IG, K),
                    301:     IPE(int_0x7B,      IG, K),
                    302:     IPE(int_0x7C,      IG, K),
                    303:     IPE(int_0x7D,      IG, K),
                    304:     IPE(int_0x7E,      IG, K),
                    305:     IPE(int_0x7F,      IG, K),
                    306:     IPE(int_0x80,      IG, K),
                    307:     IPE(int_0x81,      IG, K),
                    308:     IPE(int_0x82,      IG, K),
                    309:     IPE(int_0x83,      IG, K),
                    310:     IPE(int_0x84,      IG, K),
                    311:     IPE(int_0x85,      IG, K),
                    312:     IPE(int_0x86,      IG, K),
                    313:     IPE(int_0x87,      IG, K),
                    314:     IPE(int_0x88,      TG, K),
                    315:     IPE(int_0x89,      TG, K),
                    316:     IPE(int_0x8A,      TG, K), 
                    317:     IPE(int_0x8B,      TG, K),
                    318:     IPE(int_0x8C,      TG, K),
                    319:     IPE(int_0x8D,      TG, K),
                    320:     IPE(int_0x8E,      TG, K),
                    321:     IPE(int_0x8F,      TG, K),
                    322:     IPE(int_0x90,      TG, K),
                    323:     IPE(int_0x91,      TG, K),
                    324:     IPE(int_0x92,      TG, K),
                    325:     IPE(int_0x93,      TG, K),
                    326:     IPE(int_0x94,      TG, K),
                    327:     IPE(int_0x95,      TG, K),
                    328:     IPE(int_0x96,      TG, K),
                    329:     IPE(int_0x97,      TG, K),
                    330:     IPE(int_0x98,      TG, K),
                    331:     IPE(int_0x99,      TG, K),
                    332:     IPE(int_0x9A,      TG, K),
                    333:     IPE(int_0x9B,      TG, K),
                    334:     IPE(int_0x9C,      TG, K),
                    335:     IPE(int_0x9D,      TG, K),
                    336:     IPE(int_0x9E,      TG, K),
                    337:     IPE(int_0x9F,      TG, K),
                    338:     IPE(int_0xA0,      TG, K),
                    339:     IPE(int_0xA1,      TG, K),
                    340:     IPE(int_0xA2,      TG, K),
                    341:     IPE(int_0xA3,      TG, K),
                    342:     IPE(int_0xA4,      TG, K),
                    343:     IPE(int_0xA5,      TG, K),
                    344:     IPE(int_0xA6,      TG, K),
                    345:     IPE(int_0xA7,      TG, K),
                    346:     IPE(int_0xA8,      TG, K),
                    347:     IPE(int_0xA9,      TG, K),
                    348:     IPE(int_0xAA,      TG, K),
                    349:     IPE(int_0xAB,      TG, K),
                    350:     IPE(int_0xAC,      TG, K),
                    351:     IPE(int_0xAD,      TG, K),
                    352:     IPE(int_0xAE,      TG, K),
                    353:     IPE(int_0xAF,      TG, K), 
                    354:     IPE(int_0xB0,      TG, K), 
                    355:     IPE(int_0xB1,      TG, K), 
                    356:     IPE(int_0xB2,      TG, K), 
                    357:     IPE(int_0xB3,      TG, K), 
                    358:     IPE(int_0xB4,      TG, K), 
                    359:     IPE(int_0xB5,      TG, K), 
                    360:     IPE(int_0xB6,      TG, K), 
                    361:     IPE(int_0xB7,      TG, K), 
                    362:     IPE(int_0xB8,      TG, K), 
                    363:     IPE(int_0xB9,      TG, K), 
                    364:     IPE(int_0xBA,      TG, K), 
                    365:     IPE(int_0xBB,      TG, K), 
                    366:     IPE(int_0xBC,      TG, K), 
                    367:     IPE(int_0xBD,      TG, K), 
                    368:     IPE(int_0xBE,      TG, K), 
                    369:     IPE(int_0xBF,      TG, K), 
                    370:     IPE(int_0xC0,      TG, K), 
                    371:     IPE(int_0xC1,      TG, K), 
                    372:     IPE(int_0xC2,      TG, K), 
                    373:     IPE(int_0xC3,      TG, K), 
                    374:     IPE(int_0xC4,      TG, K), 
                    375:     IPE(int_0xC5,      TG, K),
                    376:     IPE(int_0xC6,      TG, K),
                    377:     IPE(int_0xC7,      TG, K),
                    378:     IPE(int_0xC8,      TG, K),
                    379:     IPE(int_0xC9,      TG, K),
                    380:     IPE(int_0xCA,      TG, K),
                    381:     IPE(int_0xCB,      TG, K),
                    382:     IPE(int_0xCC,      TG, K),
                    383:     IPE(int_0xCD,      TG, K),
                    384:     IPE(int_0xCE,      TG, K),
                    385:     IPE(int_0xCF,      TG, K),
                    386:     IPE(int_0xD0,      TG, K),
                    387:     IPE(int_0xD1,      TG, K),
                    388:     IPE(int_0xD2,      TG, K),
                    389:     IPE(int_0xD3,      TG, K),
                    390:     IPE(int_0xD4,      TG, K),
                    391:     IPE(int_0xD5,      TG, K),
                    392:     IPE(int_0xD6,      TG, K),
                    393:     IPE(int_0xD7,      TG, K),
                    394:     IPE(int_0xD8,      TG, K),
                    395:     IPE(int_0xD9,      TG, K),
                    396:     IPE(int_0xDA,      TG, K),
                    397:     IPE(int_0xDB,      TG, K),
                    398:     IPE(int_0xDC,      TG, K),
                    399:     IPE(int_0xDD,      TG, K),
                    400:     IPE(int_0xDE,      TG, K),
                    401:     IPE(int_0xDF,      TG, K),
                    402:     IPE(int_0xE0,      TG, K),
                    403:     IPE(int_0xE1,      TG, K),
                    404:     IPE(int_0xE2,      TG, K),
                    405:     IPE(int_0xE3,      TG, K),
                    406:     IPE(int_0xE4,      TG, K),
                    407:     IPE(int_0xE5,      TG, K),
                    408:     IPE(int_0xE6,      TG, K),
                    409:     IPE(int_0xE7,      TG, K),
                    410:     IPE(int_0xE8,      TG, K),
                    411:     IPE(int_0xE9,      TG, K),
                    412:     IPE(int_0xEA,      TG, K),
                    413:     IPE(int_0xEB,      TG, K),
                    414:     IPE(int_0xEC,      TG, K),
                    415:     IPE(int_0xED,      TG, K),
                    416:     IPE(int_0xEE,      TG, K),
                    417:     IPE(int_0xEF,      TG, K),
                    418:     IPE(int_0xF0,      TG, K),
                    419:     IPE(int_0xF1,      TG, K),
                    420:     IPE(int_0xF2,      TG, K),
                    421:     IPE(int_0xF3,      TG, K),
                    422:     IPE(int_0xF4,      TG, K),
                    423:     IPE(int_0xF5,      TG, K),
                    424:     IPE(int_0xF6,      TG, K),
                    425:     IPE(int_0xF7,      TG, K),
                    426:     IPE(int_0xF8,      TG, K),
                    427:     IPE(int_0xF9,      TG, K),
                    428:     IPE(int_0xFA,      TG, K),
                    429:     IPE(int_0xFB,      TG, K),
                    430:     IPE(int_0xFC,      TG, K),
                    431:     IPE(int_0xFD,      TG, K),
                    432:     IPE(int_0xFE,      TG, K),
                    433:     IPE(int_0xFF,      TG, K),
                    434: };
                    435: 
                    436: idt_t *                idt = (idt_entry_t *)idt_pseudo;
                    437: 
                    438: void
                    439: idt_copy(
                    440:     vm_offset_t                new_idt,
                    441:     vm_size_t          length
                    442: )
                    443: {
                    444:     if (length < (IDTSZ * sizeof (idt_entry_t)))
                    445:        panic("idt_copy");
                    446: 
                    447:     (void) memcpy((void *)new_idt, idt, IDTSZ * sizeof (idt_entry_t));
                    448:     (vm_offset_t)idt = new_idt;
                    449: 
                    450:     locate_idt((vm_offset_t) idt);
                    451: }

unix.superglobalmegacorp.com

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