Changeset 6e5252a in mainline for kernel/arch/amd64/src


Ignore:
Timestamp:
2018-11-13T20:22:20Z (7 years ago)
Author:
Jiří Zárevúcky <zarevucky.jiri@…>
Children:
156bae23
Parents:
2214382
git-author:
Jiří Zárevúcky <zarevucky.jiri@…> (2018-10-23 21:48:41)
git-committer:
Jiří Zárevúcky <zarevucky.jiri@…> (2018-11-13 20:22:20)
Message:

Place AP bootstrap correctly via linker script instead of manual copy

Location:
kernel/arch/amd64/src
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • kernel/arch/amd64/src/amd64.c

    r2214382 r6e5252a  
    9292        multiboot_info_parse(signature, (multiboot_info_t *) info);
    9393        multiboot2_info_parse(signature, (multiboot2_info_t *) info);
    94 
    95 #ifdef CONFIG_SMP
    96         size_t unmapped_size = (uintptr_t) unmapped_end - BOOT_OFFSET;
    97         /* Copy AP bootstrap routines below 1 MB. */
    98         memcpy((void *) AP_BOOT_OFFSET, (void *) BOOT_OFFSET, unmapped_size);
    99 #endif
    10094}
    10195
  • kernel/arch/amd64/src/boot/multiboot.S

    r2214382 r6e5252a  
    4646#define START_STACK  (BOOT_OFFSET - BOOT_STACK_SIZE)
    4747
    48 .section K_TEXT_START, "ax"
    49 
    50 .code32
    51 
    52 .macro pm_error msg
    53         movl \msg, %esi
    54         jmp pm_error_halt
    55 .endm
    56 
    57 .macro pm_status msg
    58 #if defined(CONFIG_EGA) && !defined(CONFIG_FB)
    59         pushl %esi
    60         movl \msg, %esi
    61         call pm_early_puts
    62         popl %esi
    63 #endif
    64 .endm
    65 
    66 .macro pm2_status msg
    67 #ifndef CONFIG_FB
    68         pm_status \msg
    69 #endif
    70 .endm
     48.section .multiboot, "a"
    7149
    7250.align 4
     
    9169        .long CONFIG_BFB_BPP
    9270#endif
     71
     72.section K_TEXT_START, "ax"
     73
     74.code32
     75
     76.macro pm_error msg
     77        movl \msg, %esi
     78        jmp pm_error_halt
     79.endm
     80
     81.macro pm_status msg
     82#if defined(CONFIG_EGA) && !defined(CONFIG_FB)
     83        pushl %esi
     84        movl \msg, %esi
     85        call pm_early_puts
     86        popl %esi
     87#endif
     88.endm
     89
     90.macro pm2_status msg
     91#ifndef CONFIG_FB
     92        pm_status \msg
     93#endif
     94.endm
    9395
    9496SYMBOL(multiboot_image_start)
  • kernel/arch/amd64/src/boot/multiboot2.S

    r2214382 r6e5252a  
    3535#include <genarch/multiboot/multiboot2.h>
    3636
    37 .section K_TEXT_START, "ax"
    38 
    39 .code32
     37.section .multiboot, "a"
    4038
    4139.align 8
  • kernel/arch/amd64/src/smp/ap.S

    r2214382 r6e5252a  
    4141#include <arch/context_struct.h>
    4242
    43 .section K_TEXT_START, "ax"
     43.section K_AP_TEXT_START, "ax"
    4444
    4545#ifdef CONFIG_SMP
     
    5050
    5151.align 4096
    52 SYMBOL(unmapped_ap_boot)
     52
     53SYMBOL(ap_boot)
    5354.code16
    5455        cli
     
    6162        orl $CR0_PE, %eax
    6263        movl %eax, %cr0     # switch to protected mode
    63         jmpl $GDT_SELECTOR(KTEXT32_DES), $jump_to_kernel - BOOT_OFFSET + AP_BOOT_OFFSET
     64        jmpl $GDT_SELECTOR(KTEXT32_DES), $jump_to_kernel
    6465
    6566jump_to_kernel:
     
    9495
    9596        # At this point we are in compatibility mode
    96         jmpl $GDT_SELECTOR(KTEXT_DES), $start64 - BOOT_OFFSET + AP_BOOT_OFFSET
     97        jmpl $GDT_SELECTOR(KTEXT_DES), $start64
    9798
    9899.code64
     
    109110#endif /* CONFIG_SMP */
    110111
    111 .section K_DATA_START, "aw", @progbits
     112.section K_AP_DATA_START, "aw", @progbits
    112113
    113114#ifdef CONFIG_SMP
    114115
    115 SYMBOL(unmapped_ap_gdtr)
     116SYMBOL(ap_gdtr)
    116117        .word 0
    117118        .long 0
Note: See TracChangeset for help on using the changeset viewer.