Annotation of coherent/b/kernel/i386/xdt.s, revision 1.1

1.1     ! root        1:        .unixorder
        !             2:        .llen   132
        !             3:        .include        as.inc
        !             4:        .text
        !             5:        .alignoff
        !             6:        .align  4
        !             7: 
        !             8: /      the init gdt is in the text segment since the data segment
        !             9: /      is relocated after we switch into 386 mode (when a
        !            10: /      valid gdt is required)
        !            11: 
        !            12: gdtinit:                               / used before turning on paging
        !            13:        .value  gdtend-gdt-1            / limit of gdt
        !            14:                                        / gdt physical addr is 0x0040_2000+gdt
        !            15:        .long   [[[-SBASE]+PBASE]<<BPCSHIFT]+gdt
        !            16:        .value  0
        !            17: gdtmap:                                        / used after paging is enabled
        !            18:        .value  gdtend-gdt-1            / limit of gdt
        !            19:        .long   gdt
        !            20:        .value  0
        !            21: 
        !            22: idtmap:                                        / used after paging is enabled
        !            23:        .value  2047
        !            24:        .long   idt
        !            25:        .value  0
        !            26: 
        !            27: ////
        !            28: /
        !            29: / Macro MEM_SEG specifies a memory segment descriptor.
        !            30: / base is 32 bits
        !            31: / limit is 20 bits
        !            32: / type is 4 bits
        !            33: / dpl is 2 bits
        !            34: / flags is the 4 high bits of byte at descriptor + 6
        !            35: /   8's bit of flags is limit granularity (0:byte 1:click)
        !            36: /   4's bit of flags is default op size (0:16 bit 1:32 bit)
        !            37: /
        !            38: ////
        !            39: 
        !            40: MEM_SEG        .macro  base,limit,type,dpl,flags
        !            41:        .value  limit
        !            42:        .value  base
        !            43:        .byte   [base] >> 16
        !            44:        .byte   0x90 | [[[dpl] & 3] << 5] | [[type] & 0xF]
        !            45:        .byte   [[[flags] << 4] & 0xF0] | [[[limit] >> 16] & 0xF]
        !            46:        .byte   [base] >> 24
        !            47:        .endm
        !            48: 
        !            49: ////
        !            50: /
        !            51: / Macro TSS_SEG specifies a tss segment descriptor.
        !            52: / base is 32 bits
        !            53: / limit is 20 bits
        !            54: / [type is 0x9]
        !            55: / [dpl is 0]
        !            56: / gran is limit granularity (0:byte 1:click)
        !            57: /
        !            58: ////
        !            59: 
        !            60: TSS_SEG        .macro  base,limit,gran
        !            61:        .value  limit
        !            62:        .value  base
        !            63:        .byte   [base] >> 16
        !            64:        .byte   0x89
        !            65:        .byte   [[[gran] << 7] & 0x80] | [[[limit] >> 16] & 0xF]
        !            66:        .byte   [base] >> 24
        !            67:        .endm
        !            68: 
        !            69: ////
        !            70: /
        !            71: / Macro LDT_SEG specifies a tss segment descriptor.
        !            72: / base is 32 bits
        !            73: / limit is 20 bits
        !            74: / [type is 0x2]
        !            75: / [dpl is 0]
        !            76: / gran is limit granularity (0:byte 1:click)
        !            77: /
        !            78: ////
        !            79: 
        !            80: LDT_SEG        .macro  base,limit,gran
        !            81:        .value  limit
        !            82:        .value  base
        !            83:        .byte   [base] >> 16
        !            84:        .byte   0x82
        !            85:        .byte   [[[gran] << 7] & 0x80] | [[[limit] >> 16] & 0xF]
        !            86:        .byte   [base] >> 24
        !            87:        .endm
        !            88: 
        !            89: ////
        !            90: /
        !            91: / Macro CALL_GATE specifies a call gate descriptor.
        !            92: / selector is 16 bits
        !            93: / offset is 32 bits
        !            94: / dwdcount is 5 bits
        !            95: / dpl is 2 bits
        !            96: /
        !            97: / Would like the following, but can't shift offset since it's a symbol.
        !            98: /      .value  offset
        !            99: /      .value  selector
        !           100: /      .value  0x8C00 | [[dwdcount] & 0x1F] | [[[dpl] & 3] << 13]
        !           101: /      .value  [offset] >> 16
        !           102: /
        !           103: / IMPORTANT!!!
        !           104: / This macro does not create a proper call gate.  
        !           105: / Count on idtinit() to swap 16-bit words at macro+2, macro+6.
        !           106: /
        !           107: ////
        !           108: 
        !           109: CALL_GATE      .macro  selector,offset,dwdcount,dpl
        !           110: 
        !           111:        .long   offset
        !           112:        .value  0x8C00 | [[dwdcount] & 0x1F] | [[[dpl] & 3] << 13]
        !           113:        .value  selector
        !           114:        .endm
        !           115: 
        !           116: ////
        !           117: /
        !           118: / "segment xxxx" below gives the value in a segment register corresponding
        !           119: / to the given descriptor.  The low 3 bits in a segment register are not
        !           120: / used in indexing into the descriptor table.
        !           121: /
        !           122: ////
        !           123: 
        !           124:        .set    DPL_0,0
        !           125:        .set    DPL_1,1
        !           126:        .set    DPL_2,2
        !           127:        .set    DPL_3,3
        !           128: 
        !           129: gdt:
        !           130:        / segment 0000
        !           131:        .long   0,0                     / null entry
        !           132: 
        !           133:        / segment 0008 - SEG_386_UI
        !           134:        MEM_SEG 0,0xFFFFF,0xB,DPL_3,0xC
        !           135: 
        !           136:        / segment 0010 - SEG_386_UD
        !           137:        MEM_SEG 0,0xFFFFF,0x3,DPL_3,0xC
        !           138: 
        !           139:        / segment 0018 - SEG_RNG0_TXT/SEG_386_KI
        !           140:        MEM_SEG 0,0xFFFFF,0xB,DPL_0,0xC
        !           141: 
        !           142:        / segment 0020 - SEG_386_KD
        !           143:        MEM_SEG 0,0xFFFFF,0x3,DPL_1,0xC
        !           144: 
        !           145:        / segment 0028 - SEG_286_UI
        !           146:        MEM_SEG 0,0xF,0xB,DPL_3,0x8
        !           147: 
        !           148:        / segment 0030 - SEG_286_UD
        !           149:        MEM_SEG 0,0xF,0x3,DPL_3,0x8
        !           150: 
        !           151:        / segment 0038 - SEG_TSS
        !           152:        / limit is 0x68 + (number of bytes in iomap)
        !           153:        / This allows the required filler byte beyond desired addressing.
        !           154:        TSS_SEG 0xFFC00000,TSS_IOMAP_OFF+[TSS_IOMAP_LEN .div 8]+3,0
        !           155: 
        !           156:        / segment 0040 - SEG_ROM
        !           157:        MEM_SEG 0xFFFC0000,0xF,0x3,DPL_0,0x8
        !           158: 
        !           159:        / segment 0048 - SEG_VIDEOa
        !           160:        MEM_SEG 0xFFFB0000,0xF,0x3,DPL_1,0x8
        !           161: 
        !           162:        / segment 0050 - SEG_VIDEOb
        !           163:        MEM_SEG 0xFFFA0000,0xF,0x3,DPL_1,0x8
        !           164: 
        !           165:        / segment 0058 - SEG_386_II     / init code (text)
        !           166:        MEM_SEG 0x400000+[PBASE<<BPCSHIFT],0xFFFFF,0xB,DPL_0,0xC
        !           167: 
        !           168:        / segment 0060 - SEG_386_ID     / init code (data)
        !           169:        MEM_SEG 0x400000+[PBASE<<BPCSHIFT],0xFFFFF,0x3,DPL_0,0xC
        !           170: 
        !           171:        / segment 0068 - SEG_286_UII
        !           172:        MEM_SEG 0x400000,0xF,0xB,DPL_3,0x8
        !           173: 
        !           174:        / segment 0070 - SEG_LDT
        !           175:        LDT_SEG 0xFFC00000,0xF,0
        !           176: 
        !           177:        / segment 0078 - SEG_RNG0_STK
        !           178:        MEM_SEG 0,0xFFBFF,0x7,DPL_0,0xC
        !           179: 
        !           180:        / segment 0080 - SEG_RNG1_TXT
        !           181:        MEM_SEG 0,0xFFFFF,0xB,DPL_1,0xC
        !           182: 
        !           183:        / segment 0088 - SEG_RNG1_STK
        !           184:        MEM_SEG 0,0xFFFFE,0x7,DPL_1,0xC
        !           185: 
        !           186:        / Call gates need idtinit() to fix them before they can be used.
        !           187:        .globl  gdtFixBegin
        !           188:        .globl  gdtFixEnd
        !           189: gdtFixBegin:
        !           190:        / segment 0090 - SEG_MMUUPD - Call gate for mmu update
        !           191:        CALL_GATE       SEG_RNG0_TXT,mmuupdfR0,0,DPL_1
        !           192: 
        !           193:        / segment 0098 - SEG_SET_EM - Call gate for writing CR0 EM bit
        !           194:        CALL_GATE       SEG_RNG0_TXT,setEmfR0,1,DPL_1
        !           195: gdtFixEnd:
        !           196: gdtend:
        !           197: 
        !           198: /      The two entries in the ldt are call gates whose format is somewhat
        !           199: /      different from the other segment descriptors
        !           200: /
        !           201: /      BCS compatibility requires an LDT
        !           202: 
        !           203: ldt:
        !           204:        / ldt + 0000
        !           205:        CALL_GATE       SEG_RNG1_TXT,syc32,1,DPL_3
        !           206: /      .long   syc32                           / call gate for system call
        !           207: /      .long   0xFFC0EC01
        !           208: 
        !           209:        / ldt + 0008
        !           210: /      .long   sig32                           / call gate for signal return
        !           211: /      .long   0xFFC0EC01
        !           212:        CALL_GATE       SEG_RNG1_TXT,sig32,1,DPL_3
        !           213: ldtend:
        !           214: 
        !           215: ////
        !           216: /
        !           217: / Macro IRPT_GATE specifies a call gate descriptor.
        !           218: / selector is 16 bits
        !           219: / offset is 32 bits
        !           220: / dwdcount is 5 bits
        !           221: / dpl is 2 bits
        !           222: /
        !           223: / Would like the following, but can't shift offset since it's a symbol.
        !           224: /      .value  offset
        !           225: /      .value  selector
        !           226: /      .value  0x8E00 | [[dwdcount] & 0x1F] | [[[dpl] & 3] << 13]
        !           227: /      .value  [offset] >> 16
        !           228: /
        !           229: / IMPORTANT!!!
        !           230: / This macro does not create a proper interrupt gate.  
        !           231: / Count on idtinit() to swap 16-bit words at macro+2, macro+6.
        !           232: /
        !           233: ////
        !           234: 
        !           235: IRPT_GATE      .macro  selector,offset,dwdcount,dpl
        !           236: 
        !           237:        .long   offset
        !           238:        .value  0x8E00 | [[dwdcount] & 0x1F] | [[[dpl] & 3] << 13]
        !           239:        .value  selector
        !           240:        .endm
        !           241: 
        !           242: idt:
        !           243:        IRPT_GATE       SEG_RNG1_TXT,trap0,0,DPL_3
        !           244: /      IRPT_GATE       SEG_RNG0_TXT,trap1_ker,0,DPL_3  / Ring 0
        !           245:        IRPT_GATE       SEG_RNG1_TXT,trap1_usr,0,DPL_3  / Ring 1
        !           246:        IRPT_GATE       SEG_RNG1_TXT,trap2,0,DPL_3
        !           247:        IRPT_GATE       SEG_RNG1_TXT,trap3,0,DPL_3
        !           248:        IRPT_GATE       SEG_RNG1_TXT,trap4,0,DPL_3
        !           249:        IRPT_GATE       SEG_RNG1_TXT,trap5,0,DPL_3
        !           250:        IRPT_GATE       SEG_RNG1_TXT,trap6,0,DPL_3
        !           251:        IRPT_GATE       SEG_RNG1_TXT,trap7,0,DPL_3
        !           252:        IRPT_GATE       SEG_RNG1_TXT,trap8,0,DPL_3
        !           253:        IRPT_GATE       SEG_RNG1_TXT,trap9,0,DPL_3
        !           254:        IRPT_GATE       SEG_RNG1_TXT,trap10,0,DPL_3
        !           255:        IRPT_GATE       SEG_RNG1_TXT,trap11,0,DPL_3
        !           256:        IRPT_GATE       SEG_RNG1_TXT,trap12,0,DPL_3
        !           257:        IRPT_GATE       SEG_RNG0_TXT,trap13,0,DPL_3     / Ring 0!
        !           258:        IRPT_GATE       SEG_RNG1_TXT,trap14,0,DPL_3
        !           259:        .long   0,0
        !           260:        IRPT_GATE       SEG_RNG1_TXT,trap16,0,DPL_3
        !           261:        .org    .+0x78
        !           262:        IRPT_GATE       SEG_RNG1_TXT,clk,0,DPL_3
        !           263:        IRPT_GATE       SEG_RNG1_TXT,dev1,0,DPL_3
        !           264:        IRPT_GATE       SEG_RNG1_TXT,dev9,0,DPL_3
        !           265:        IRPT_GATE       SEG_RNG1_TXT,dev3,0,DPL_3
        !           266:        IRPT_GATE       SEG_RNG1_TXT,dev4,0,DPL_3
        !           267:        IRPT_GATE       SEG_RNG1_TXT,dev5,0,DPL_3
        !           268:        IRPT_GATE       SEG_RNG1_TXT,dev6,0,DPL_3
        !           269:        IRPT_GATE       SEG_RNG1_TXT,dev7,0,DPL_3
        !           270:        .org    .+0x240
        !           271:        IRPT_GATE       SEG_RNG1_TXT,dev8,0,DPL_3
        !           272:        IRPT_GATE       SEG_RNG1_TXT,dev9,0,DPL_3
        !           273:        IRPT_GATE       SEG_RNG1_TXT,dev10,0,DPL_3
        !           274:        IRPT_GATE       SEG_RNG1_TXT,dev11,0,DPL_3
        !           275:        IRPT_GATE       SEG_RNG1_TXT,dev12,0,DPL_3
        !           276:        IRPT_GATE       SEG_RNG1_TXT,dev13,0,DPL_3
        !           277:        IRPT_GATE       SEG_RNG1_TXT,dev14,0,DPL_3
        !           278:        IRPT_GATE       SEG_RNG1_TXT,dev15,0,DPL_3
        !           279:        .org    .+0x40
        !           280:        IRPT_GATE       SEG_RNG1_TXT,syc,0,DPL_3
        !           281:        IRPT_GATE       SEG_RNG1_TXT,syc,0,DPL_3
        !           282:        IRPT_GATE       SEG_RNG1_TXT,syc,0,DPL_3
        !           283:        IRPT_GATE       SEG_RNG1_TXT,syc,0,DPL_3
        !           284:        IRPT_GATE       SEG_RNG1_TXT,syc,0,DPL_3
        !           285:        IRPT_GATE       SEG_RNG1_TXT,syc,0,DPL_3
        !           286:        IRPT_GATE       SEG_RNG1_TXT,syc,0,DPL_3
        !           287:        IRPT_GATE       SEG_RNG1_TXT,syc,0,DPL_3
        !           288:        IRPT_GATE       SEG_RNG1_TXT,syc,0,DPL_3
        !           289:        IRPT_GATE       SEG_RNG1_TXT,syc,0,DPL_3
        !           290:        IRPT_GATE       SEG_RNG1_TXT,syc,0,DPL_3
        !           291:        IRPT_GATE       SEG_RNG1_TXT,syc,0,DPL_3
        !           292:        IRPT_GATE       SEG_RNG1_TXT,syc,0,DPL_3
        !           293:        IRPT_GATE       SEG_RNG1_TXT,syc,0,DPL_3
        !           294:        IRPT_GATE       SEG_RNG1_TXT,syc,0,DPL_3
        !           295:        IRPT_GATE       SEG_RNG1_TXT,syc,0,DPL_3
        !           296:        IRPT_GATE       SEG_RNG1_TXT,syc,0,DPL_3
        !           297:        IRPT_GATE       SEG_RNG1_TXT,syc,0,DPL_3
        !           298:        IRPT_GATE       SEG_RNG1_TXT,syc,0,DPL_3
        !           299:        IRPT_GATE       SEG_RNG1_TXT,syc,0,DPL_3
        !           300:        IRPT_GATE       SEG_RNG1_TXT,syc,0,DPL_3
        !           301:        IRPT_GATE       SEG_RNG1_TXT,syc,0,DPL_3
        !           302:        IRPT_GATE       SEG_RNG1_TXT,syc,0,DPL_3
        !           303:        IRPT_GATE       SEG_RNG1_TXT,syc,0,DPL_3
        !           304:        IRPT_GATE       SEG_RNG1_TXT,syc,0,DPL_3
        !           305:        IRPT_GATE       SEG_RNG1_TXT,syc,0,DPL_3
        !           306:        IRPT_GATE       SEG_RNG1_TXT,syc,0,DPL_3
        !           307:        IRPT_GATE       SEG_RNG1_TXT,syc,0,DPL_3
        !           308:        IRPT_GATE       SEG_RNG1_TXT,syc,0,DPL_3
        !           309:        IRPT_GATE       SEG_RNG1_TXT,syc,0,DPL_3
        !           310:        IRPT_GATE       SEG_RNG1_TXT,syc,0,DPL_3
        !           311:        IRPT_GATE       SEG_RNG1_TXT,syc,0,DPL_3
        !           312:        IRPT_GATE       SEG_RNG1_TXT,syc,0,DPL_3
        !           313:        IRPT_GATE       SEG_RNG1_TXT,syc,0,DPL_3
        !           314:        IRPT_GATE       SEG_RNG1_TXT,syc,0,DPL_3
        !           315:        IRPT_GATE       SEG_RNG1_TXT,syc,0,DPL_3
        !           316:        IRPT_GATE       SEG_RNG1_TXT,syc,0,DPL_3
        !           317:        IRPT_GATE       SEG_RNG1_TXT,syc,0,DPL_3
        !           318:        IRPT_GATE       SEG_RNG1_TXT,syc,0,DPL_3
        !           319:        IRPT_GATE       SEG_RNG1_TXT,syc,0,DPL_3
        !           320:        IRPT_GATE       SEG_RNG1_TXT,syc,0,DPL_3
        !           321:        IRPT_GATE       SEG_RNG1_TXT,syc,0,DPL_3
        !           322:        IRPT_GATE       SEG_RNG1_TXT,syc,0,DPL_3
        !           323:        IRPT_GATE       SEG_RNG1_TXT,syc,0,DPL_3
        !           324:        IRPT_GATE       SEG_RNG1_TXT,syc,0,DPL_3
        !           325:        IRPT_GATE       SEG_RNG1_TXT,syc,0,DPL_3
        !           326:        IRPT_GATE       SEG_RNG1_TXT,syc,0,DPL_3
        !           327:        IRPT_GATE       SEG_RNG1_TXT,syc,0,DPL_3
        !           328:        IRPT_GATE       SEG_RNG1_TXT,syc,0,DPL_3
        !           329:        IRPT_GATE       SEG_RNG1_TXT,syc,0,DPL_3
        !           330:        IRPT_GATE       SEG_RNG1_TXT,syc,0,DPL_3
        !           331:        IRPT_GATE       SEG_RNG1_TXT,syc,0,DPL_3
        !           332:        IRPT_GATE       SEG_RNG1_TXT,syc,0,DPL_3
        !           333:        IRPT_GATE       SEG_RNG1_TXT,syc,0,DPL_3
        !           334:        IRPT_GATE       SEG_RNG1_TXT,syc,0,DPL_3
        !           335:        IRPT_GATE       SEG_RNG1_TXT,syc,0,DPL_3
        !           336:        IRPT_GATE       SEG_RNG1_TXT,syc,0,DPL_3
        !           337:        IRPT_GATE       SEG_RNG1_TXT,syc,0,DPL_3
        !           338:        IRPT_GATE       SEG_RNG1_TXT,syc,0,DPL_3
        !           339:        IRPT_GATE       SEG_RNG1_TXT,syc,0,DPL_3
        !           340:        IRPT_GATE       SEG_RNG1_TXT,syc,0,DPL_3
        !           341:        IRPT_GATE       SEG_RNG1_TXT,syc,0,DPL_3
        !           342:        IRPT_GATE       SEG_RNG1_TXT,syc,0,DPL_3
        !           343:        IRPT_GATE       SEG_RNG1_TXT,syc,0,DPL_3
        !           344:        IRPT_GATE       SEG_RNG1_TXT,syc,0,DPL_3
        !           345:        IRPT_GATE       SEG_RNG1_TXT,syc,0,DPL_3
        !           346:        IRPT_GATE       SEG_RNG1_TXT,syc,0,DPL_3
        !           347:        IRPT_GATE       SEG_RNG1_TXT,syc,0,DPL_3
        !           348:        IRPT_GATE       SEG_RNG1_TXT,syc,0,DPL_3
        !           349:        IRPT_GATE       SEG_RNG1_TXT,syc,0,DPL_3
        !           350:        IRPT_GATE       SEG_RNG1_TXT,syc,0,DPL_3
        !           351:        IRPT_GATE       SEG_RNG1_TXT,syc,0,DPL_3
        !           352:        IRPT_GATE       SEG_RNG1_TXT,syc,0,DPL_3
        !           353:        IRPT_GATE       SEG_RNG1_TXT,syc,0,DPL_3
        !           354:        IRPT_GATE       SEG_RNG1_TXT,syc,0,DPL_3
        !           355:        IRPT_GATE       SEG_RNG1_TXT,syc,0,DPL_3
        !           356:        IRPT_GATE       SEG_RNG1_TXT,syc,0,DPL_3
        !           357:        IRPT_GATE       SEG_RNG1_TXT,syc,0,DPL_3
        !           358:        IRPT_GATE       SEG_RNG1_TXT,syc,0,DPL_3
        !           359:        IRPT_GATE       SEG_RNG1_TXT,syc,0,DPL_3
        !           360:        IRPT_GATE       SEG_RNG1_TXT,syc,0,DPL_3
        !           361:        IRPT_GATE       SEG_RNG1_TXT,syc,0,DPL_3
        !           362:        IRPT_GATE       SEG_RNG1_TXT,syc,0,DPL_3
        !           363:        IRPT_GATE       SEG_RNG1_TXT,syc,0,DPL_3
        !           364:        IRPT_GATE       SEG_RNG1_TXT,syc,0,DPL_3
        !           365:        IRPT_GATE       SEG_RNG1_TXT,syc,0,DPL_3
        !           366:        IRPT_GATE       SEG_RNG1_TXT,syc,0,DPL_3
        !           367:        IRPT_GATE       SEG_RNG1_TXT,syc,0,DPL_3
        !           368:        IRPT_GATE       SEG_RNG1_TXT,syc,0,DPL_3
        !           369:        IRPT_GATE       SEG_RNG1_TXT,syc,0,DPL_3
        !           370:        IRPT_GATE       SEG_RNG1_TXT,syc,0,DPL_3
        !           371:        IRPT_GATE       SEG_RNG1_TXT,syc,0,DPL_3
        !           372:        IRPT_GATE       SEG_RNG1_TXT,syc,0,DPL_3
        !           373:        IRPT_GATE       SEG_RNG1_TXT,syc,0,DPL_3
        !           374:        IRPT_GATE       SEG_RNG1_TXT,syc,0,DPL_3
        !           375:        IRPT_GATE       SEG_RNG1_TXT,syc,0,DPL_3
        !           376:        IRPT_GATE       SEG_RNG1_TXT,syc,0,DPL_3
        !           377:        IRPT_GATE       SEG_RNG1_TXT,syc,0,DPL_3
        !           378:        IRPT_GATE       SEG_RNG1_TXT,syc,0,DPL_3
        !           379:        IRPT_GATE       SEG_RNG1_TXT,syc,0,DPL_3
        !           380:        IRPT_GATE       SEG_RNG1_TXT,syc,0,DPL_3
        !           381:        IRPT_GATE       SEG_RNG1_TXT,syc,0,DPL_3
        !           382:        IRPT_GATE       SEG_RNG1_TXT,syc,0,DPL_3
        !           383:        IRPT_GATE       SEG_RNG1_TXT,syc,0,DPL_3
        !           384:        IRPT_GATE       SEG_RNG1_TXT,syc,0,DPL_3
        !           385:        IRPT_GATE       SEG_RNG1_TXT,syc,0,DPL_3
        !           386:        IRPT_GATE       SEG_RNG1_TXT,syc,0,DPL_3
        !           387:        IRPT_GATE       SEG_RNG1_TXT,syc,0,DPL_3
        !           388:        IRPT_GATE       SEG_RNG1_TXT,syc,0,DPL_3
        !           389:        IRPT_GATE       SEG_RNG1_TXT,syc,0,DPL_3
        !           390:        IRPT_GATE       SEG_RNG1_TXT,syc,0,DPL_3
        !           391:        IRPT_GATE       SEG_RNG1_TXT,syc,0,DPL_3
        !           392:        IRPT_GATE       SEG_RNG1_TXT,syc,0,DPL_3
        !           393:        IRPT_GATE       SEG_RNG1_TXT,syc,0,DPL_3
        !           394:        IRPT_GATE       SEG_RNG1_TXT,syc,0,DPL_3
        !           395:        IRPT_GATE       SEG_RNG1_TXT,syc,0,DPL_3
        !           396:        IRPT_GATE       SEG_RNG1_TXT,syc,0,DPL_3
        !           397:        IRPT_GATE       SEG_RNG1_TXT,syc,0,DPL_3
        !           398:        IRPT_GATE       SEG_RNG1_TXT,syc,0,DPL_3
        !           399:        IRPT_GATE       SEG_RNG1_TXT,syc,0,DPL_3
        !           400:        IRPT_GATE       SEG_RNG1_TXT,syc,0,DPL_3
        !           401:        IRPT_GATE       SEG_RNG1_TXT,syc,0,DPL_3
        !           402:        IRPT_GATE       SEG_RNG1_TXT,syc,0,DPL_3
        !           403:        IRPT_GATE       SEG_RNG1_TXT,syc,0,DPL_3
        !           404:        IRPT_GATE       SEG_RNG1_TXT,syc,0,DPL_3
        !           405:        IRPT_GATE       SEG_RNG1_TXT,syc,0,DPL_3
        !           406:        IRPT_GATE       SEG_RNG1_TXT,syc,0,DPL_3
        !           407:        IRPT_GATE       SEG_RNG1_TXT,syc,0,DPL_3
        !           408:        .long   0
        !           409: idtend:
        !           410:        .align  4
        !           411:        .long   0,0,0,0

unix.superglobalmegacorp.com

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