diff options
| author | Russ Cox <rsc@swtch.com> | 2009-07-11 19:15:32 -0700 | 
|---|---|---|
| committer | Russ Cox <rsc@swtch.com> | 2009-07-11 19:15:32 -0700 | 
| commit | 887f19686cf377db55953dac651ca8147c268092 (patch) | |
| tree | 4657092bb085b53a043e2af0f885ba6d3c880b71 | |
| parent | 8b75366ce4ae7ad5f77225b247d097955574ba0b (diff) | |
| download | xv6-labs-887f19686cf377db55953dac651ca8147c268092.tar.gz xv6-labs-887f19686cf377db55953dac651ca8147c268092.tar.bz2 xv6-labs-887f19686cf377db55953dac651ca8147c268092.zip | |
bootasm cleanup
| -rw-r--r-- | bootasm.S | 3 | ||||
| -rw-r--r-- | bootother.S | 21 | 
2 files changed, 12 insertions, 12 deletions
| @@ -86,8 +86,7 @@ gdt:    SEG_NULLASM                             # null seg    SEG_ASM(STA_X|STA_R, 0x0, 0xffffffff)   # code seg    SEG_ASM(STA_W, 0x0, 0xffffffff)         # data seg -  SEG_ASM(STA_W, 0x100, 0xffffffff)       # per-cpu data seg; 0x100 is okay for now  gdtdesc: -  .word   0x1f                            # sizeof(gdt) - 1 +  .word   (gdtdesc - gdt - 1)                            # sizeof(gdt) - 1    .long   gdt                             # address gdt diff --git a/bootother.S b/bootother.S index cb3ff4c..47f547e 100644 --- a/bootother.S +++ b/bootother.S @@ -19,15 +19,15 @@  #   - it uses the address at start-4 for the %esp  #   - it jumps to the address at start-8 instead of calling bootmain -.set PROT_MODE_CSEG, 0x8         # kernel code segment selector -.set PROT_MODE_DSEG, 0x10        # kernel data segment selector -.set CR0_PE_ON,      0x1         # protected mode enable flag +#define SEG_KCODE 1  // kernel code +#define SEG_KDATA 2  // kernel data+stack +#define CR0_PE    1  // protected mode enable bit + +.code16                       # Assemble for 16-bit mode  .globl start  start: -  .code16                     # Assemble for 16-bit mode    cli                         # Disable interrupts -  cld                         # String operations increment    # Set up the important data segment registers (DS, ES, SS).    xorw    %ax,%ax             # Segment number zero @@ -42,22 +42,23 @@ start:    # effective memory map does not change during the switch.    lgdt    gdtdesc    movl    %cr0, %eax -  orl     $CR0_PE_ON, %eax +  orl     $CR0_PE, %eax    movl    %eax, %cr0    # Jump to next instruction, but in 32-bit code segment.    # Switches processor into 32-bit mode. -  ljmp    $PROT_MODE_CSEG, $protcseg +  ljmp    $(SEG_KCODE<<3), $protcseg    .code32                     # Assemble for 32-bit mode  protcseg:    # Set up the protected-mode data segment registers -  movw    $PROT_MODE_DSEG, %ax    # Our data segment selector +  movw    $(SEG_KDATA<<3), %ax    # Our data segment selector    movw    %ax, %ds                # -> DS: Data Segment    movw    %ax, %es                # -> ES: Extra Segment +  movw    %ax, %ss                # -> SS: Stack Segment +  movw    $0, %ax                 # Zero segments not ready for use    movw    %ax, %fs                # -> FS    movw    %ax, %gs                # -> GS -  movw    %ax, %ss                # -> SS: Stack Segment    movl    start-4, %esp    movl    start-8, %eax @@ -81,5 +82,5 @@ gdt:    SEG_ASM(STA_W, 0x0, 0xffffffff)         # data seg  gdtdesc: -  .word   0x17                            # sizeof(gdt) - 1 +  .word   (gdtdesc - gdt - 1)                            # sizeof(gdt) - 1    .long   gdt                             # address gdt | 
