next up previous contents index
Next: 10.7.3 base_gdt_load: load the Up: (X86) Base Environment: Segmentation Previous: 10.7.1 base_gdt: default global

10.7.2 base_gdt_init: initialize the base GDT to default values

   

SYNOPSIS

#include <oskit/x86/base_gdt.h>

void base_gdt_init(void); void i16_base_gdt_init(void);

DESCRIPTION

This function initializes the standard descriptors in the base GDT as described in Section 10.7.1.

For all of the standard descriptors except LINEAR_CS and LINEAR_DS, the kvtolin macro is used to compute the linear address to plug into the offset field of the descriptor: for BASE_TSS, this is kvtolin(&base_tss); for the kernel code and data segments, it is kvtolin(0) (i.e., the linear address corresponding to the beginning of kernel virtual address space). LINEAR_CS and LINEAR_DS are always given an offset of 0.

A 16-bit version of this function, i16_base_gdt_init, is also provided so that the GDT can be initialized properly before the processor has been switched to protected mode. (Switching to protected mode on the x86 according to Intel's recommended procedure requires a functional GDT to be already initialized and activated.)

DEPENDENCIES

fill_descriptor
10.3.8
kvtolin
10.6.2
base_gdt
10.7.1
base_tss
10.7.6



University of Utah Flux Research Group