diff options
| author | rsc <rsc> | 2006-09-08 15:31:23 +0000 | 
|---|---|---|
| committer | rsc <rsc> | 2006-09-08 15:31:23 +0000 | 
| commit | b02e13f0f67d86c895b1272ebaca6f4902d7dbb1 (patch) | |
| tree | 15a287d4e01478b873ebc91e1739ee390b3a432a | |
| parent | 3689c7f5cea4b0b48ab1c96ff6346f0a475b7a62 (diff) | |
| download | xv6-labs-b02e13f0f67d86c895b1272ebaca6f4902d7dbb1.tar.gz xv6-labs-b02e13f0f67d86c895b1272ebaca6f4902d7dbb1.tar.bz2 xv6-labs-b02e13f0f67d86c895b1272ebaca6f4902d7dbb1.zip  | |
shorten
| -rw-r--r-- | bootasm.S | 22 | 
1 files changed, 9 insertions, 13 deletions
@@ -54,16 +54,15 @@ seta20.2:    movb    $0xdf,%al               # Enable    outb    %al,$0x60               #  A20 -  # Switch from real to protected mode -  #  The descriptors in our GDT allow all physical memory to be accessed. -  #  Furthermore, the descriptors have base addresses of 0, so that the -  #  segment translation is a NOP, ie. virtual addresses are identical to -  #  their physical addresses.  With this setup, immediately after -  #  enabling protected mode it will still appear to this code -  #  that it is running directly on physical memory with no translation. -  #  This initial NOP-translation setup is required by the processor -  #  to ensure that the transition to protected mode occurs smoothly. - +# Switch from real to protected mode +#  The descriptors in our GDT allow all physical memory to be accessed. +#  Furthermore, the descriptors have base addresses of 0, so that the +#  segment translation is a NOP, ie. virtual addresses are identical to +#  their physical addresses.  With this setup, immediately after +#  enabling protected mode it will still appear to this code +#  that it is running directly on physical memory with no translation. +#  This initial NOP-translation setup is required by the processor +#  to ensure that the transition to protected mode occurs smoothly.  real_to_prot:    cli                         # Mandatory since we dont set up an IDT    lgdt    gdtdesc             # load GDT -- mandatory in protected mode @@ -85,19 +84,16 @@ protcseg:    movw    %ax, %fs                # -> FS    movw    %ax, %gs                # -> GS    movw    %ax, %ss                # -> SS: Stack Segment -    call cmain                      # finish the boot load from C.                                    # cmain() should not return  spin:    jmp spin                        # ..but in case it does, spin -  .p2align 2                                # force 4 byte alignment  gdt:    SEG_NULLASM                             # null seg    SEG_ASM(STA_X|STA_R, 0x0, 0xffffffff)   # code seg    SEG_ASM(STA_W, 0x0, 0xffffffff)         # data seg -  gdtdesc:    .word   0x17                            # sizeof(gdt) - 1    .long   gdt                             # address gdt  | 
