Changeset 66def8d in mainline for arch/ia32/src/boot/boot.S


Ignore:
Timestamp:
2006-01-08T17:51:36Z (19 years ago)
Author:
Martin Decky <martin@…>
Branches:
lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
Children:
8725fb4
Parents:
078a0a1
Message:

simplify and cleanup ia32 boot process, remove obsolete stuff

File:
1 edited

Legend:

Unmodified
Added
Removed
  • arch/ia32/src/boot/boot.S

    r078a0a1 r66def8d  
    11#
    22# Copyright (C) 2001-2004 Jakub Jermar
     3# Copyright (C) 2005-2006 Martin Decky
    34# All rights reserved.
    45#
     
    3233#include <arch/pm.h>
    3334
     35#define START_STACK (BOOT_OFFSET - BOOT_STACK_SIZE)
     36
    3437.section K_TEXT_START, "ax"
    3538
     
    3942.code32
    4043.align 4
     44.global multiboot_image_start
    4145multiboot_header:
    4246        .long MULTIBOOT_HEADER_MAGIC
    4347        .long MULTIBOOT_HEADER_FLAGS
    4448        .long -(MULTIBOOT_HEADER_MAGIC + MULTIBOOT_HEADER_FLAGS)        # checksum
    45         .long multiboot_header + BOOT_OFFSET
    46         .long unmapped_ktext_start + BOOT_OFFSET
     49        .long multiboot_header
     50        .long unmapped_ktext_start
    4751        .long 0
    4852        .long 0
    49         .long multiboot_image_start + BOOT_OFFSET
     53        .long multiboot_image_start
    5054       
    5155multiboot_image_start:
    52         movl $BOOTSTRAP_OFFSET - 0x400, %esp                            # initialize stack pointer
    53        
    54         lgdt protected_bootstrap_gdtr - 0x80000000                      # initialize Global Descriptor Table register
     56        movl $START_STACK, %esp                 # initialize stack pointer
     57        lgdt KA2PA(bootstrap_gdtr)              # initialize Global Descriptor Table register
    5558
    5659        movw $KDATA, %cx
     
    5861        movw %cx, %gs
    5962        movw %cx, %fs
    60         movw %cx, %ds                                                   # kernel data + stack
     63        movw %cx, %ds                                   # kernel data + stack
    6164        movw %cx, %ss
    6265       
    63         jmpl $KTEXT, $multiboot_meeting_point + BOOT_OFFSET
     66        jmpl $KTEXT, $multiboot_meeting_point
    6467        multiboot_meeting_point:
    6568       
    6669        pushl %ebx                                                      # save parameters from GRUB
    6770        pushl %eax
    68        
    69         movl $BOOTSTRAP_OFFSET + BOOT_OFFSET, %esi
    70         movl $BOOTSTRAP_OFFSET, %edi
    71         movl $_hardcoded_unmapped_size, %ecx
    72         cld
    73         rep movsb
    7471       
    7572        call map_kernel                                                 # map kernel and turn paging on
     
    171168        invalid_boot:
    172169       
    173         call main_bsp - BOOT_OFFSET                                     # never returns
     170#ifdef CONFIG_SMP
     171       
     172        # copy AP bootstrap routines below 1 MB
     173       
     174        movl $BOOT_OFFSET, %esi
     175        movl $AP_BOOT_OFFSET, %edi
     176        movl $_hardcoded_unmapped_size, %ecx
     177        cld
     178        rep movsb
     179       
     180#endif
     181       
     182        call main_bsp                                                           # never returns
    174183
    175184        cli
     
    215224page_directory:
    216225        .space 4096, 0
    217 
    218 .global real_bootstrap_gdtr_boot
    219 real_bootstrap_gdtr_boot:
    220         .word selector(GDT_ITEMS)
    221         .long KA2PA(gdt)-BOOT_OFFSET
    222 
Note: See TracChangeset for help on using the changeset viewer.