X-Git-Url: http://v3vee.org/palacios/gitweb/gitweb.cgi?a=blobdiff_plain;f=palacios%2Fsrc%2Fvmboot%2Fvmxassist%2Fmachine.h;fp=palacios%2Fsrc%2Fvmboot%2Fvmxassist%2Fmachine.h;h=0000000000000000000000000000000000000000;hb=d34450b1e6fe3c2e1295c268c1722c669ba8d545;hp=0ea2adfa84725273c0fb834d5c9dec681110f5fb;hpb=1a24d4e8fb3918a42b124777db5b41940150023e;p=palacios.releases.git diff --git a/palacios/src/vmboot/vmxassist/machine.h b/palacios/src/vmboot/vmxassist/machine.h deleted file mode 100644 index 0ea2adf..0000000 --- a/palacios/src/vmboot/vmxassist/machine.h +++ /dev/null @@ -1,209 +0,0 @@ -/* - * machine.h: Intel CPU specific definitions - * - * Leendert van Doorn, leendert@watson.ibm.com - * Copyright (c) 2005, International Business Machines Corporation. - * - * This program is free software; you can redistribute it and/or modify it - * under the terms and conditions of the GNU General Public License, - * version 2, as published by the Free Software Foundation. - * - * This program is distributed in the hope it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for - * more details. - * - * You should have received a copy of the GNU General Public License along with - * this program; if not, write to the Free Software Foundation, Inc., 59 Temple - * Place - Suite 330, Boston, MA 02111-1307 USA. - */ -#ifndef __MACHINE_H__ -#define __MACHINE_H__ - -/* the size of our stack (4KB) */ -#define STACK_SIZE 8192 - -#define TSS_SELECTOR 0x08 -#define CODE_SELECTOR 0x10 -#define DATA_SELECTOR 0x18 - -#define CR0_PE (1 << 0) -#define CR0_EM (1 << 2) -#define CR0_TS (1 << 3) -#define CR0_NE (1 << 5) -#define CR0_PG (1 << 31) - -#define CR4_VME (1 << 0) -#define CR4_PVI (1 << 1) -#define CR4_PSE (1 << 4) -#define CR4_PAE (1 << 5) - -#define EFLAGS_ZF (1 << 6) -#define EFLAGS_TF (1 << 8) -#define EFLAGS_IF (1 << 9) -#define EFLAGS_DF (1 << 10) -#define EFLAGS_IOPL (3 << 12) -#define EFLAGS_VM ((1 << 17) | EFLAGS_IOPL) -#define EFLAGS_VIF (1 << 19) -#define EFLAGS_VIP (1 << 20) - -#define LOG_PGSIZE 12 /* log2(page size) */ -#define LOG_PDSIZE 22 /* log2(page directory size) */ - -/* Derived constants */ -#define PGSIZE (1 << LOG_PGSIZE) /* page size */ -#define PGMASK (~(PGSIZE - 1)) /* page mask */ -#define LPGSIZE (1 << LOG_PDSIZE) /* large page size */ -#define LPGMASK (~(LPGSIZE - 1)) /* large page mask */ - -#ifdef TEST -#define PTE_P (1 << 0) /* Present */ -#define PTE_RW (1 << 1) /* Read/Write */ -#define PTE_US (1 << 2) /* User/Supervisor */ -#define PTE_PS (1 << 7) /* Page Size */ -#endif - -/* Programmable Interrupt Contoller (PIC) defines */ -#define PIC_MASTER 0x20 -#define PIC_SLAVE 0xA0 - -#define PIC_CMD 0 /* command */ -#define PIC_ISR 0 /* interrupt status */ -#define PIC_IMR 1 /* interrupt mask */ - - -#ifndef __ASSEMBLY__ - -struct dtr { - unsigned short size; - unsigned long base __attribute__ ((packed)); -}; - -struct tss { - unsigned short prev_link; - unsigned short _1; - unsigned long esp0; - unsigned short ss0; - unsigned short _2; - unsigned long esp1; - unsigned short ss1; - unsigned short _3; - unsigned long esp2; - unsigned short ss2; - unsigned short _4; - unsigned long cr3; - unsigned long eip; - unsigned long eflags; - unsigned long eax; - unsigned long ecx; - unsigned long edx; - unsigned long ebx; - unsigned long esi; - unsigned long edi; - unsigned long esp; - unsigned long ebp; - unsigned long es; - unsigned long cs; - unsigned long ss; - unsigned long ds; - unsigned long fs; - unsigned long gs; - unsigned short ldt_segment; - unsigned short _5; - unsigned short _6; - unsigned short iomap_base; -#ifdef ENABLE_VME - unsigned long int_redir[8]; -#endif - unsigned char iomap[8192]; -}; - -static inline void -outw(unsigned short addr, unsigned short val) -{ - __asm__ __volatile__ ("outw %%ax, %%dx" :: "d"(addr), "a"(val)); -} - -static inline void -outb(unsigned short addr, unsigned char val) -{ - __asm__ __volatile__ ("outb %%al, %%dx" :: "d"(addr), "a"(val)); -} - -static inline unsigned char -inb(unsigned short addr) -{ - unsigned char val; - - __asm__ __volatile__ ("inb %w1,%0" : "=a" (val) : "Nd" (addr)); - return val; -} - -static inline unsigned -get_cmos(int reg) -{ - outb(0x70, reg); - return inb(0x71); -} - -static inline unsigned -get_cr0(void) -{ - unsigned rv; - __asm__ __volatile__("movl %%cr0, %0" : "=r"(rv)); - return rv; -} - -static inline void -set_cr0(unsigned value) -{ - __asm__ __volatile__( - "movl %0, %%cr0\n" - "jmp 1f\n" - "1: nop\n" - : /* no outputs */ - : "r"(value) - ); -} - -static inline unsigned -get_cr2(void) -{ - unsigned rv; - - __asm__ __volatile__("movl %%cr2, %0" : "=r"(rv)); - return rv; -} - -static inline unsigned -get_cr4(void) -{ - unsigned rv; - __asm__ __volatile__("movl %%cr4, %0" : "=r"(rv)); - return rv; -} - -static inline void -set_cr3(unsigned addr) -{ - __asm__ __volatile__("movl %0, %%cr3" : /* no outputs */ : "r"(addr)); -} - -static inline void -set_cr4(unsigned value) -{ - __asm__ __volatile__("movl %0, %%cr4" : /* no outputs */ : "r"(value)); -} - -#ifdef TEST -static inline void -breakpoint(void) -{ - outw(0x8A00, 0x8AE0); -} -#endif /* TEST */ - -#endif /* __ASSEMBLY__ */ - -#endif /* __MACHINE_H__ */ -