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.


moved guest files to kernel image
[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.7 $
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 VM_KERNEL_TARGET        equ 0x100000
20         
21 ; BIOS loads the boot sector at offset 0 in this segment
22 BOOTSEG equ 0x07C0
23  
24 ; We'll move the boot sector up to higher memory.
25 ; Note that the "ISA hole" begins at segment 0xA000 == 640K.
26 INITSEG equ 0x9000
27
28 ; Put the setup code here, just after the boot sector.
29 SETUPSEG equ 0x9020
30
31 ; Load our "Kernel" at this segment, which starts at 64K.
32 ; The number of sectors in the kernel, NUM_KERN_SECTORS,
33 ; will be passed on the command line.
34 KERNSEG equ 0x1000
35
36 ;; Load Segment for moving guest kernel to extended memory
37 ;; Note that this segment must not colide with where the VMM kernel
38 ;; is initially loaded.  At this point, we just place it in the last
39 ;; 64K of RAM available before the ISA hole and hope for the best
40  VMSEG equ 0x8000
41
42 ; Size of PFAT boot record.
43 ; Keep up to date with <geekos/pfat.h>.
44 PFAT_BOOT_RECORD_SIZE equ 28
45
46 ; Offset of BIOS signature word in boot sector.
47 BIOS_SIGNATURE_OFFSET equ 510
48
49 ; Offset of PFAT boot record in boot sector.
50 PFAT_BOOT_RECORD_OFFSET equ BIOS_SIGNATURE_OFFSET - PFAT_BOOT_RECORD_SIZE
51
52 ; Video memory segment
53 VIDSEG equ 0xb800
54
55 ; The following information is correct for a 1.44M floppy.
56 ; Yes, I'm hard coding this.
57 SECTORS_PER_TRACK equ 18
58 HEADS equ 2
59 CYLINDERS equ 80
60
61 ; 8259A PIC initialization codes.
62 ; Source: Linux bootsect.S, and Intel 8259A datasheet
63
64 ; The most important reason why we reprogram the PICs is to
65 ; route the hardware interrupts through vectors *above*
66 ; those reserved by Intel.  The BIOS (for historical reasons :-)
67 ; routes them such that they conflict with internal processor-generated
68 ; interrupts.
69
70 ICW1 equ 0x11           ; ICW1 - ICW4 needed, cascade mode, interval=8,
71                         ;   edge triggered. (I think interval is irrelevant
72                         ;   for x86.)
73 ICW2_MASTER equ 0x20    ; put IRQs 0-7 at 0x20 (above Intel reserved ints)
74 ICW2_SLAVE equ 0x28     ; put IRQs 8-15 at 0x28
75 ICW3_MASTER equ 0x04    ; IR2 connected to slave
76 ICW3_SLAVE equ 0x02     ; slave has id 2
77 ICW4 equ 0x01           ; 8086 mode, no auto-EOI, non-buffered mode,
78                         ;   not special fully nested mode
79
80 ; Kernel code and data segment selectors.
81 ; Keep these up to date with defs.h.
82 KERNEL_CS equ 1<<3      ; kernel code segment is GDT entry 1
83 KERNEL_DS equ 2<<3      ; kernel data segment is GDT entry 2
84
85 ; Pages for context object and stack for initial kernel thread -
86 ; the one we construct for Main().  Keep these up to date with defs.h.
87 ; We put them at 1MB, for no particular reason.
88         ;;  Moved to just after where the VM will go
89 KERN_THREAD_OBJ equ 4096
90 KERN_STACK equ KERN_THREAD_OBJ + 4096
91
92 %endif