Changeset dd80fc6 in mainline


Ignore:
Timestamp:
2005-09-03T22:26:31Z (19 years ago)
Author:
Martin Decky <martin@…>
Branches:
lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
Children:
5eb1379
Parents:
5260478
Message:

GRUB basic booting (IA-32)

Location:
arch/ia32
Files:
6 edited

Legend:

Unmodified
Added
Removed
  • arch/ia32/Makefile.inc.cross

    r5260478 rdd80fc6  
    77AS=$(IA-32_BINUTILS_DIR)/$(IA-32_TARGET)-as
    88LD=$(IA-32_BINUTILS_DIR)/$(IA-32_TARGET)-ld
     9OBJCOPY=$(IA-32_BINUTILS_DIR)/$(IA-32_TARGET)-objcopy
     10
     11BFD_NAME=elf32-i386
     12BFD_ARCH=i386
    913
    1014DEFS:=-DARCH=$(ARCH)
  • arch/ia32/include/pm.h

    r5260478 rdd80fc6  
    130130
    131131extern struct ptr_16_32 gdtr;
    132 extern struct ptr_16_32 bsp_bootstrap_gdtr;
    133 extern struct ptr_16_32 ap_bootstrap_gdtr;
     132extern struct ptr_16_32 real_bootstrap_gdtr;
     133extern struct ptr_16_32 protected_bootstrap_gdtr;
    134134extern struct tss *tss_p;
    135135
  • arch/ia32/src/boot/boot.S

    r5260478 rdd80fc6  
    5353        call memmap_arch_init
    5454       
    55         lgdt bsp_bootstrap_gdtr                                 # initialize Global Descriptor Table register
     55        lgdt real_bootstrap_gdtr                                # initialize Global Descriptor Table register
    5656       
    5757        movl %cr0, %eax
     
    9494        rep movsb
    9595       
    96         jmp protected
     96        call main_bsp                   # never returns
     97
     98        cli
     99        hlt
    97100       
    98101multiboot_image_start:
    99         movl BOOTSTRAP_OFFSET - 0x400, %esp             # initialize stack pointer
     102        movl $BOOTSTRAP_OFFSET - 0x400, %esp                    # initialize stack pointer
    100103       
    101         lgdt gdtr                                                               # initialize Global Descriptor Table register
     104        lgdt protected_bootstrap_gdtr - 0x80000000              # initialize Global Descriptor Table register
    102105
    103106        movw $KDATA, %ax
     
    105108        movw %ax, %gs
    106109        movw %ax, %fs
    107         movw %ax, %ds                                                   # kernel data + stack
     110        movw %ax, %ds                                                                   # kernel data + stack
    108111        movw %ax, %ss
    109112       
    110         jmpl $KTEXT, $multiboot_meeting_point
     113        jmpl $KTEXT, $multiboot_meeting_point + BOOT_OFFSET
    111114        multiboot_meeting_point:
    112115       
    113         call map_kernel                                                 # map kernel and turn paging on
     116        call map_kernel                                                                 # map kernel and turn paging on
    114117       
    115 protected:
    116         call main_bsp           # never returns
     118        call main_bsp - BOOT_OFFSET                                             # never returns
    117119
    118120        cli
  • arch/ia32/src/pm.c

    r5260478 rdd80fc6  
    7171
    7272/* gdtr is changed by kmp before next CPU is initialized */
    73 struct ptr_16_32 bsp_bootstrap_gdtr __attribute__ ((section ("K_DATA_START"))) = { .limit = sizeof(gdt), .base = KA2PA((__address) gdt - BOOT_OFFSET) };
    74 struct ptr_16_32 ap_bootstrap_gdtr __attribute__ ((section ("K_DATA_START"))) = { .limit = sizeof(gdt), .base = KA2PA((__address) gdt) };
     73struct ptr_16_32 real_bootstrap_gdtr __attribute__ ((section ("K_DATA_START"))) = { .limit = sizeof(gdt), .base = KA2PA((__address) gdt - BOOT_OFFSET) };
     74struct ptr_16_32 protected_bootstrap_gdtr = { .limit = sizeof(gdt), .base = KA2PA((__address) gdt) };
    7575struct ptr_16_32 gdtr = { .limit = sizeof(gdt), .base = (__address) gdt };
    7676
  • arch/ia32/src/smp/ap.S

    r5260478 rdd80fc6  
    5151        movw %ax, %ds
    5252
    53         lgdt ap_bootstrap_gdtr  # initialize Global Descriptor Table register
     53        lgdt real_bootstrap_gdtr        # initialize Global Descriptor Table register
    5454       
    5555        movl %cr0, %eax
    5656        orl $1, %eax
    57         movl %eax, %cr0                 # switch to protected mode
     57        movl %eax, %cr0                         # switch to protected mode
    5858        jmpl $KTEXT, $jump_to_kernel
    5959       
  • arch/ia32/src/smp/smp.c

    r5260478 rdd80fc6  
    145145                memcpy(gdt_new, gdt, GDT_ITEMS*sizeof(struct descriptor));
    146146                memsetb((__address)(&gdt_new[TSS_DES]), sizeof(struct descriptor), 0);
    147                 ap_bootstrap_gdtr.base = KA2PA((__address) gdt_new);
     147                real_bootstrap_gdtr.base = KA2PA((__address) gdt_new);
    148148                gdtr.base = (__address) gdt_new;
    149149
Note: See TracChangeset for help on using the changeset viewer.