Main Page | Modules | File List | File Members

descgate.c

00001 /* ndk - [ descgate.c ]
00002  *
00003  * Routines to create descriptors and gates withen
00004  * arrays (ie, the idt and/or gdt).
00005  *
00006  * Please see:
00007  *   /src/gdt.c
00008  *   /src/idt.c
00009  *
00010  * (c)2002 dcipher / neuraldk
00011  *           www.neuraldk.org
00012  */
00013 #include "descgate.h"
00014 
00015 void createDescriptor(Array *table, short descNum, long base,
00016                       long limit, long control) {
00017   Descriptor *desc;
00018   desc = (Descriptor *)arrayElementAt(table, descNum);
00019   //(Descriptor *)(table + desc_num * 8);
00020 
00021   desc->limit_low   = limit & 0xffff;
00022   desc->base_low    = base  & 0xffff;
00023   desc->base_med    = (base >> 16) & 0xff;
00024   desc->access      = (control+D_PRESENT) >> 8;
00025   desc->limit_high  = limit >> 16;
00026   desc->granularity = (control & 0xff) >> 4;
00027   desc->base_high   = base  >> 24;
00028 
00029   return;
00030 }
00031 
00032 void createGate(Array *table, short descNum, long offset,
00033                     short selector, long control) {
00034   Gate *gate;
00035   gate = (Gate *)arrayElementAt(table, descNum);
00036   //(Gate *)(table + desc_num * 8);
00037 
00038   gate->offset_low  = offset & 0xffff;
00039   gate->selector    = selector;
00040   gate->access      = control + D_PRESENT;
00041   gate->offset_high = offset >> 16;
00042 
00043   return;
00044 }

Generated on Sun Nov 21 18:26:11 2004 for ndk by doxygen 1.3.2