00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021 #ifndef __ASM_H
00022 #define __ASM_H
00023
00024 #include "ktypes.h"
00025
00026 #define lds(desc_sel) __asm__ __volatile__("movl %0, %%ds"::"r"(desc_sel));
00027 #define lss(desc_sel) __asm__ __volatile__("movl %0, %%ss"::"r"(desc_sel));
00028 #define les(desc_sel) __asm__ __volatile__("movl %0, %%es"::"r"(desc_sel));
00029 #define lfs(desc_sel) __asm__ __volatile__("movl %0, %%fs"::"r"(desc_sel));
00030 #define lgs(desc_sel) __asm__ __volatile__("movl %0, %%gs"::"r"(desc_sel));
00031
00032 #define cli() __asm__ __volatile__("cli");
00033 #define sti() __asm__ __volatile__("sti");
00034
00035 #define setCR0(val) __asm__ __volatile__ ("movl %%eax, %%cr0"::"a"(val));
00036 #define getCR0(var) __asm__ __volatile__ ("movl %%cr0,%%eax":"=a"(var));
00037
00038 #define setCR3(val) __asm__ __volatile__ ("movl %%eax, %%cr3"::"a"(val));
00039 #define getCR3(var) __asm__ __volatile__ ("movl %%cr3,%%eax":"=a"(var));
00040
00041 void lidt(IDT *);
00042 void lgdt(GDT *gdt);
00043 void sgdt(GDT *gdt);
00044 void kdump();
00045 #endif
00046
00047