Palacios Public Git Repository

To checkout Palacios execute

  git clone http://v3vee.org/palacios/palacios.web/palacios.git
This will give you the master branch. You probably want the devel branch or one of the release branches. To switch to the devel branch, simply execute
  cd palacios
  git checkout --track -b devel origin/devel
The other branches are similar.


added generic VMM framework
[palacios.git] / palacios / src / geekos / defs.asm
1 ; Definitions for use in GeekOS boot code
2 ; Copyright (c) 2001, David H. Hovemeyer <daveho@cs.umd.edu>
3 ; $Revision: 1.5 $
4
5 ; This is free software.  You are permitted to use,
6 ; redistribute, and modify it as specified in the file "COPYING".
7
8 ; A lot of this code is adapted from Kernel Toolkit 0.2
9 ; and Linux version 2.2.x, so the following copyrights apply:
10
11 ; Copyright (C) 1991, 1992 Linus Torvalds
12 ; modified by Drew Eckhardt
13 ; modified by Bruce Evans (bde)
14 ; adapted for Kernel Toolkit by Luigi Sgro
15
16 %ifndef DEFS_ASM
17 %define DEFS_ASM
18
19 TOP_OF_MEM   equ 0x30000000
20 VM_SIZE      equ 0x20000000
21 START_OF_VM  equ 0x0
22 VM_KERNEL_TARGET        equ 0x100000
23         
24 ; BIOS loads the boot sector at offset 0 in this segment
25 BOOTSEG equ 0x07C0
26  
27 ; We'll move the boot sector up to higher memory.
28 ; Note that the "ISA hole" begins at segment 0xA000 == 640K.
29 INITSEG equ 0x9000
30
31 ; Put the setup code here, just after the boot sector.
32 SETUPSEG equ 0x9020
33
34 ; Load our "Kernel" at this segment, which starts at 64K.
35 ; The number of sectors in the kernel, NUM_KERN_SECTORS,
36 ; will be passed on the command line.
37 KERNSEG equ 0x1000
38
39 ;; Load Segment for moving guest kernel to extended memory
40 ;; Note that this segment must not colide with where the VMM kernel
41 ;; is initially loaded.  At this point, we just place it in the last
42 ;; 64K of RAM available before the ISA hole and hope for the best
43 VMSEG equ 0x8000                ;
44
45 ; Size of PFAT boot record.
46 ; Keep up to date with <geekos/pfat.h>.
47 PFAT_BOOT_RECORD_SIZE equ 28
48
49 ; Offset of BIOS signature word in boot sector.
50 BIOS_SIGNATURE_OFFSET equ 510
51
52 ; Offset of PFAT boot record in boot sector.
53 PFAT_BOOT_RECORD_OFFSET equ BIOS_SIGNATURE_OFFSET - PFAT_BOOT_RECORD_SIZE
54
55 ; Video memory segment
56 VIDSEG equ 0xb800
57
58 ; The following information is correct for a 1.44M floppy.
59 ; Yes, I'm hard coding this.
60 SECTORS_PER_TRACK equ 18
61 HEADS equ 2
62 CYLINDERS equ 80
63
64 ; 8259A PIC initialization codes.
65 ; Source: Linux bootsect.S, and Intel 8259A datasheet
66
67 ; The most important reason why we reprogram the PICs is to
68 ; route the hardware interrupts through vectors *above*
69 ; those reserved by Intel.  The BIOS (for historical reasons :-)
70 ; routes them such that they conflict with internal processor-generated
71 ; interrupts.
72
73 ICW1 equ 0x11           ; ICW1 - ICW4 needed, cascade mode, interval=8,
74                         ;   edge triggered. (I think interval is irrelevant
75                         ;   for x86.)
76 ICW2_MASTER equ 0x20    ; put IRQs 0-7 at 0x20 (above Intel reserved ints)
77 ICW2_SLAVE equ 0x28     ; put IRQs 8-15 at 0x28
78 ICW3_MASTER equ 0x04    ; IR2 connected to slave
79 ICW3_SLAVE equ 0x02     ; slave has id 2
80 ICW4 equ 0x01           ; 8086 mode, no auto-EOI, non-buffered mode,
81                         ;   not special fully nested mode
82
83 ; Kernel code and data segment selectors.
84 ; Keep these up to date with defs.h.
85 KERNEL_CS equ 1<<3      ; kernel code segment is GDT entry 1
86 KERNEL_DS equ 2<<3      ; kernel data segment is GDT entry 2
87
88 ; Pages for context object and stack for initial kernel thread -
89 ; the one we construct for Main().  Keep these up to date with defs.h.
90 ; We put them at 1MB, for no particular reason.
91         ;;  Moved to just after where the VM will go
92 KERN_THREAD_OBJ equ (START_OF_VM+VM_SIZE)
93 KERN_STACK equ KERN_THREAD_OBJ + 4096
94
95 %endif