Changeset 873c681 in mainline for kernel/arch/amd64/src/boot/boot.S


Ignore:
Timestamp:
2010-07-01T16:29:48Z (14 years ago)
Author:
Martin Decky <martin@…>
Branches:
lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
Children:
90ed058
Parents:
99718a2e
Message:

initial support for early kernel debugging prints
use C comments in C-preprocessed assembler files (to avoid confusion between assembler comments and preprocessor directives)

File:
1 edited

Legend:

Unmodified
Added
Removed
  • kernel/arch/amd64/src/boot/boot.S

    r99718a2e r873c681  
    1 #
    2 # Copyright (c) 2005 Ondrej Palkovsky
    3 # Copyright (c) 2006 Martin Decky
    4 # Copyright (c) 2008 Jakub Jermar
    5 # All rights reserved.
    6 #
    7 # Redistribution and use in source and binary forms, with or without
    8 # modification, are permitted provided that the following conditions
    9 # are met:
    10 #
    11 # - Redistributions of source code must retain the above copyright
    12 #   notice, this list of conditions and the following disclaimer.
    13 # - Redistributions in binary form must reproduce the above copyright
    14 #   notice, this list of conditions and the following disclaimer in the
    15 #   documentation and/or other materials provided with the distribution.
    16 # - The name of the author may not be used to endorse or promote products
    17 #   derived from this software without specific prior written permission.
    18 #
    19 # THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
    20 # IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
    21 # OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
    22 # IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
    23 # INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
    24 # NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
    25 # DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
    26 # THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
    27 # (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
    28 # THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
    29 #
     1/*
     2 * Copyright (c) 2005 Ondrej Palkovsky
     3 * Copyright (c) 2006 Martin Decky
     4 * Copyright (c) 2008 Jakub Jermar
     5 * All rights reserved.
     6 *
     7 * Redistribution and use in source and binary forms, with or without
     8 * modification, are permitted provided that the following conditions
     9 * are met:
     10 *
     11 * - Redistributions of source code must retain the above copyright
     12 *   notice, this list of conditions and the following disclaimer.
     13 * - Redistributions in binary form must reproduce the above copyright
     14 *   notice, this list of conditions and the following disclaimer in the
     15 *   documentation and/or other materials provided with the distribution.
     16 * - The name of the author may not be used to endorse or promote products
     17 *   derived from this software without specific prior written permission.
     18 *
     19 * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
     20 * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
     21 * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
     22 * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
     23 * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
     24 * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
     25 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
     26 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
     27 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
     28 * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
     29 */
    3030
    3131#include <arch/boot/boot.h>
     
    3737#include <arch/cpuid.h>
    3838
    39 #define START_STACK     (BOOT_OFFSET - BOOT_STACK_SIZE)
     39#define START_STACK  (BOOT_OFFSET - BOOT_STACK_SIZE)
    4040
    4141.section K_TEXT_START, "ax"
    4242
    4343.code32
     44
     45.macro pm_error msg
     46        movl \msg, %esi
     47        jmp pm_error_halt
     48.endm
     49
     50.macro pm_status msg
     51#ifdef CONFIG_EGA
     52        pushl %esi
     53        movl \msg, %esi
     54        call pm_early_puts
     55        popl %esi
     56#endif
     57.endm
     58
     59.macro pm2_status msg
     60#ifndef CONFIG_FB
     61        pm_status \msg
     62#endif
     63.endm
     64
    4465.align 4
    4566.global multiboot_image_start
     
    4768        .long MULTIBOOT_HEADER_MAGIC
    4869        .long MULTIBOOT_HEADER_FLAGS
    49         .long -(MULTIBOOT_HEADER_MAGIC + MULTIBOOT_HEADER_FLAGS)  # checksum
     70        .long -(MULTIBOOT_HEADER_MAGIC + MULTIBOOT_HEADER_FLAGS)  /* checksum */
    5071        .long multiboot_header
    5172        .long unmapped_ktext_start
     
    5677multiboot_image_start:
    5778        cld
    58         movl $START_STACK, %esp             # initialize stack pointer
    59         lgdtl bootstrap_gdtr                # initialize Global Descriptor Table register
    60        
     79       
     80        /* Initialize stack pointer */
     81        movl $START_STACK, %esp
     82       
     83        /* Initialize Global Descriptor Table register */
     84        lgdtl bootstrap_gdtr
     85       
     86        /* Kernel data + stack */
    6187        movw $gdtselector(KDATA_DES), %cx
    6288        movw %cx, %es
    63         movw %cx, %ds                       # kernel data + stack
     89        movw %cx, %ds
    6490        movw %cx, %ss
    6591       
    66         #
    67         # Simics seems to remove hidden part of GS on entering user mode
    68         # when _visible_ part of GS does not point to user-mode segment.
    69         #
    70        
     92        /*
     93         * Simics seems to remove hidden part of GS on entering user mode
     94         * when _visible_ part of GS does not point to user-mode segment.
     95         */
    7196        movw $gdtselector(UDATA_DES), %cx
    7297        movw %cx, %fs
     
    76101        multiboot_meeting_point:
    77102       
    78         movl %eax, grub_eax                 # save parameters from GRUB
     103        /* Save GRUB arguments */
     104        movl %eax, grub_eax
    79105        movl %ebx, grub_ebx
    80106       
    81         #
    82         # Protected 32-bit. We want to reuse the code-seg descriptor,
    83         # the Default operand size must not be 1 when entering long mode.
    84         #
     107        pm_status $status_prot
    85108       
    86109        movl $(INTEL_CPUID_EXTENDED), %eax
     
    89112        ja extended_cpuid_supported
    90113       
    91                 movl $extended_cpuid_msg, %esi
    92                 jmp error_halt
     114                pm_error $err_extended_cpuid
    93115       
    94116        extended_cpuid_supported:
     
    99121        jc long_mode_supported
    100122       
    101                 movl $long_mode_msg, %esi
    102                 jmp error_halt
     123                pm_error $err_long_mode
    103124       
    104125        long_mode_supported:
     
    107128        jc noexecute_supported
    108129       
    109                 movl $noexecute_msg, %esi
    110                 jmp error_halt
     130                pm_error $err_noexecute
    111131       
    112132        noexecute_supported:
     
    117137        jc fx_supported
    118138       
    119                 movl $fx_msg, %esi
    120                 jmp error_halt
     139                pm_error $err_fx
    121140       
    122141        fx_supported:
     
    125144        jc sse2_supported
    126145       
    127                 movl $sse2_msg, %esi
    128                 jmp error_halt
     146                pm_error $err_sse2
    129147       
    130148        sse2_supported:
    131 
     149       
    132150#include "vesa_prot.inc"
    133 
    134         #
    135         # Enable 64-bit page translation entries - CR4.PAE = 1.
    136         # Paging is not enabled until after long mode is enabled.
    137         #
     151       
     152        /*
     153         * Protected 32-bit. We want to reuse the code-seg descriptor,
     154         * the Default operand size must not be 1 when entering long mode.
     155         */
     156       
     157        pm2_status $status_prot2
     158       
     159        /*
     160         * Enable 64-bit page translation entries - CR4.PAE = 1.
     161         * Paging is not enabled until after long mode is enabled.
     162         */
    138163       
    139164        movl %cr4, %eax
     
    141166        movl %eax, %cr4
    142167       
    143         # set up paging tables
    144        
     168        /* Set up paging tables */
    145169        leal ptl_0, %eax
    146170        movl %eax, %cr3
    147171       
    148         # enable long mode
    149        
    150         movl $EFER_MSR_NUM, %ecx            # EFER MSR number
    151         rdmsr                               # read EFER
    152         btsl $AMD_LME_FLAG, %eax            # set LME = 1
    153         wrmsr                               # write EFER
    154        
    155         # enable paging to activate long mode (set CR0.PG = 1)
    156        
     172        /* Enable long mode */
     173        movl $EFER_MSR_NUM, %ecx
     174        rdmsr                     /* read EFER */
     175        btsl $AMD_LME_FLAG, %eax  /* set LME = 1 */
     176        wrmsr
     177       
     178        /* Enable paging to activate long mode (set CR0.PG = 1) */
    157179        movl %cr0, %eax
    158180        btsl $31, %eax
    159181        movl %eax, %cr0
    160182       
    161         # at this point we are in compatibility mode
    162        
     183        /* At this point we are in compatibility mode */
    163184        jmpl $gdtselector(KTEXT_DES), $start64
    164185
     186/** Print string to EGA display (in light red) and halt.
     187 *
     188 * Should be executed from 32 bit protected mode with paging
     189 * turned off. Stack is not required. This routine is used even
     190 * if CONFIG_EGA is not enabled. Since we are going to halt the
     191 * CPU anyway, it is always better to at least try to print
     192 * some hints.
     193 *
     194 * @param %esi NULL-terminated string to print.
     195 *
     196 */
     197pm_error_halt:
     198        movl $0xb8000, %edi  /* base of EGA text mode memory */
     199        xorl %eax, %eax
     200       
     201        /* Read bits 8 - 15 of the cursor address */
     202        movw $0x3d4, %dx
     203        movb $0xe, %al
     204        outb %al, %dx
     205       
     206        movw $0x3d5, %dx
     207        inb %dx, %al
     208        shl $8, %ax
     209       
     210        /* Read bits 0 - 7 of the cursor address */
     211        movw $0x3d4, %dx
     212        movb $0xf, %al
     213        outb %al, %dx
     214       
     215        movw $0x3d5, %dx
     216        inb %dx, %al
     217       
     218        /* Sanity check for the cursor on screen */
     219        cmp $2000, %ax
     220        jb err_cursor_ok
     221       
     222                movw $1998, %ax
     223       
     224        err_cursor_ok:
     225       
     226        movw %ax, %bx
     227        shl $1, %eax
     228        addl %eax, %edi
     229       
     230        err_ploop:
     231                lodsb
     232               
     233                cmp $0, %al
     234                je err_ploop_end
     235               
     236                movb $0x0c, %ah  /* black background, light red foreground */
     237                stosw
     238               
     239                /* Sanity check for the cursor on the last line */
     240                inc %bx
     241                cmp $2000, %bx
     242                jb err_ploop
     243               
     244                /* Scroll the screen (24 rows) */
     245                movl %esi, %edx
     246                movl $0xb80a0, %esi
     247                movl $0xb8000, %edi
     248                movl $1920, %ecx
     249                rep movsw
     250               
     251                /* Clear the 24th row */
     252                xorl %eax, %eax
     253                movl $80, %ecx
     254                rep stosw
     255               
     256                /* Go to row 24 */
     257                movl %edx, %esi
     258                movl $0xb8f00, %edi
     259                movw $1920, %bx
     260               
     261                jmp err_ploop
     262        err_ploop_end:
     263       
     264        /* Write bits 8 - 15 of the cursor address */
     265        movw $0x3d4, %dx
     266        movb $0xe, %al
     267        outb %al, %dx
     268       
     269        movw $0x3d5, %dx
     270        movb %bh, %al
     271        outb %al, %dx
     272       
     273        /* Write bits 0 - 7 of the cursor address */
     274        movw $0x3d4, %dx
     275        movb $0xf, %al
     276        outb %al, %dx
     277       
     278        movw $0x3d5, %dx
     279        movb %bl, %al
     280        outb %al, %dx
     281       
     282        cli
     283        hlt1:
     284                hlt
     285                jmp hlt1
     286
     287/** Print string to EGA display (in light green).
     288 *
     289 * Should be called from 32 bit protected mode with paging
     290 * turned off. A stack space of at least 24 bytes is required,
     291 * but the function does not establish a stack frame.
     292 *
     293 * Macros such as pm_status and pm2_status take care that
     294 * this function is used only when CONFIG_EGA is enabled
     295 * and CONFIG_FB is disabled.
     296 *
     297 * @param %esi NULL-terminated string to print.
     298 *
     299 */
     300pm_early_puts:
     301        pushl %eax
     302        pushl %ebx
     303        pushl %ecx
     304        pushl %edx
     305        pushl %edi
     306       
     307        movl $0xb8000, %edi  /* base of EGA text mode memory */
     308        xorl %eax, %eax
     309       
     310        /* Read bits 8 - 15 of the cursor address */
     311        movw $0x3d4, %dx
     312        movb $0xe, %al
     313        outb %al, %dx
     314       
     315        movw $0x3d5, %dx
     316        inb %dx, %al
     317        shl $8, %ax
     318       
     319        /* Read bits 0 - 7 of the cursor address */
     320        movw $0x3d4, %dx
     321        movb $0xf, %al
     322        outb %al, %dx
     323       
     324        movw $0x3d5, %dx
     325        inb %dx, %al
     326       
     327        /* Sanity check for the cursor on screen */
     328        cmp $2000, %ax
     329        jb pm_puts_cursor_ok
     330       
     331                movw $1998, %ax
     332       
     333        pm_puts_cursor_ok:
     334       
     335        movw %ax, %bx
     336        shl $1, %eax
     337        addl %eax, %edi
     338       
     339        pm_puts_ploop:
     340                lodsb
     341               
     342                cmp $0, %al
     343                je pm_puts_ploop_end
     344               
     345                movb $0x0a, %ah  /* black background, light green foreground */
     346                stosw
     347               
     348                /* Sanity check for the cursor on the last line */
     349                inc %bx
     350                cmp $2000, %bx
     351                jb pm_puts_ploop
     352               
     353                /* Scroll the screen (24 rows) */
     354                movl %esi, %edx
     355                movl $0xb80a0, %esi
     356                movl $0xb8000, %edi
     357                movl $1920, %ecx
     358                rep movsw
     359               
     360                /* Clear the 24th row */
     361                xorl %eax, %eax
     362                movl $80, %ecx
     363                rep stosw
     364               
     365                /* Go to row 24 */
     366                movl %edx, %esi
     367                movl $0xb8f00, %edi
     368                movw $1920, %bx
     369               
     370                jmp pm_puts_ploop
     371        pm_puts_ploop_end:
     372       
     373        /* Write bits 8 - 15 of the cursor address */
     374        movw $0x3d4, %dx
     375        movb $0xe, %al
     376        outb %al, %dx
     377       
     378        movw $0x3d5, %dx
     379        movb %bh, %al
     380        outb %al, %dx
     381       
     382        /* Write bits 0 - 7 of the cursor address */
     383        movw $0x3d4, %dx
     384        movb $0xf, %al
     385        outb %al, %dx
     386       
     387        movw $0x3d5, %dx
     388        movb %bl, %al
     389        outb %al, %dx
     390       
     391        popl %edi
     392        popl %edx
     393        popl %ecx
     394        popl %ebx
     395        popl %eax
     396       
     397        ret
     398
    165399.code64
     400
     401.macro long_status msg
     402        pushq %rdi
     403        movq \msg, %rdi
     404        call early_puts
     405        popq %rdi
     406.endm
     407
    166408start64:
     409       
     410        /*
     411         * Long mode.
     412         */
     413       
    167414        movq $(PA2KA(START_STACK)), %rsp
    168415       
    169         # call arch_pre_main(grub_eax, grub_ebx)
     416        /* Create the first stack frame */
     417        pushq $0
     418        movq %rsp, %rbp
     419       
     420        long_status $status_long
     421       
     422        /* Call arch_pre_main(grub_eax, grub_ebx) */
    170423        xorq %rdi, %rdi
    171424        movl grub_eax, %edi
     
    176429        callq *%rax
    177430       
    178         # create the first stack frame
    179         pushq $0
    180         movq %rsp, %rbp
    181        
     431        long_status $status_main
     432       
     433        /* Call main_bsp() */
    182434        movabsq $main_bsp, %rax
    183435        call *%rax
    184436       
    185         # not reached
    186        
     437        /* Not reached */
    187438        cli
    188439        hlt0:
     
    190441                jmp hlt0
    191442
    192 # Print string from %esi to EGA display (in red) and halt
    193 error_halt:
    194         movl $0xb8000, %edi       # base of EGA text mode memory
    195         xorl %eax, %eax
    196        
    197         movw $0x3d4, %dx          # read bits 8 - 15 of the cursor address
     443/** Print string to EGA display.
     444 *
     445 * Should be called from long mode (with paging enabled
     446 * and stack established). This function is ABI compliant
     447 * (without red-zone).
     448 *
     449 * If CONFIG_EGA is undefined or CONFIG_FB is defined
     450 * then this function does nothing.
     451 *
     452 * @param %rdi NULL-terminated string to print.
     453 *
     454 */
     455early_puts:
     456       
     457#if ((defined(CONFIG_EGA)) && (!defined(CONFIG_FB)))
     458       
     459        /* Prologue, save preserved registers */
     460        pushq %rbp
     461        movq %rsp, %rbp
     462        pushq %rbx
     463       
     464        movq %rdi, %rsi
     465        movq $(PA2KA(0xb8000)), %rdi  /* base of EGA text mode memory */
     466        xorq %rax, %rax
     467       
     468        /* Read bits 8 - 15 of the cursor address */
     469        movw $0x3d4, %dx
    198470        movb $0xe, %al
    199471        outb %al, %dx
     
    203475        shl $8, %ax
    204476       
    205         movw $0x3d4, %dx          # read bits 0 - 7 of the cursor address
     477        /* Read bits 0 - 7 of the cursor address */
     478        movw $0x3d4, %dx
    206479        movb $0xf, %al
    207480        outb %al, %dx
     
    210483        inb %dx, %al
    211484       
    212         cmp $1920, %ax
    213         jbe cursor_ok
    214        
    215                 movw $1920, %ax       # sanity check for the cursor on the last line
    216        
    217         cursor_ok:
     485        /* Sanity check for the cursor on screen */
     486        cmp $2000, %ax
     487        jb early_puts_cursor_ok
     488       
     489                movw $1998, %ax
     490       
     491        early_puts_cursor_ok:
    218492       
    219493        movw %ax, %bx
    220         shl $1, %eax
    221         addl %eax, %edi
    222        
    223         movw $0x0c00, %ax         # black background, light red foreground
    224        
    225         ploop:
     494        shl $1, %rax
     495        addq %rax, %rdi
     496       
     497        early_puts_ploop:
    226498                lodsb
     499               
    227500                cmp $0, %al
    228                 je ploop_end
     501                je early_puts_ploop_end
     502               
     503                movb $0x0e, %ah  /* black background, yellow foreground */
    229504                stosw
     505               
     506                /* Sanity check for the cursor on the last line */
    230507                inc %bx
    231                 jmp ploop
    232         ploop_end:
    233        
    234         movw $0x3d4, %dx          # write bits 8 - 15 of the cursor address
     508                cmp $2000, %bx
     509                jb early_puts_ploop
     510               
     511                /* Scroll the screen (24 rows) */
     512                movq %rsi, %rdx
     513                movq $(PA2KA(0xb80a0)), %rsi
     514                movq $(PA2KA(0xb8000)), %rdi
     515                movq $1920, %rcx
     516                rep movsw
     517               
     518                /* Clear the 24th row */
     519                xorq %rax, %rax
     520                movq $80, %rcx
     521                rep stosw
     522               
     523                /* Go to row 24 */
     524                movq %rdx, %rsi
     525                movq $(PA2KA(0xb8f00)), %rdi
     526                movw $1920, %bx
     527               
     528                jmp early_puts_ploop
     529        early_puts_ploop_end:
     530       
     531        /* Write bits 8 - 15 of the cursor address */
     532        movw $0x3d4, %dx
    235533        movb $0xe, %al
    236534        outb %al, %dx
     
    240538        outb %al, %dx
    241539       
    242         movw $0x3d4, %dx          # write bits 0 - 7 of the cursor address
     540        /* Write bits 0 - 7 of the cursor address */
     541        movw $0x3d4, %dx
    243542        movb $0xf, %al
    244543        outb %al, %dx
     
    248547        outb %al, %dx
    249548       
    250         cli
    251         hlt1:
    252                 hlt
    253                 jmp hlt1
     549        /* Epilogue, restore preserved registers */
     550        popq %rbx
     551        leave
     552       
     553#endif
     554       
     555        ret
    254556
    255557#include "vesa_real.inc"
     
    257559.section K_INI_PTLS, "aw", @progbits
    258560
    259 #
    260 # Macro for generating initial page table contents.
    261 # @param cnt Number of entries to generate. Must be multiple of 8.
    262 # @param g   Number of GB that will be added to the mapping.
    263 #
     561/** Generate initial page table contents.
     562 *
     563 * @param cnt Number of entries to generate. Must be multiple of 8.
     564 * @param g   Number of GB that will be added to the mapping.
     565 *
     566 */
    264567.macro ptl2gen cnt g
    265568        .if \cnt
     
    276579.endm
    277580
    278 # Page table for pages in the 1st gigabyte.
     581/* Page table for pages in the 1st gigabyte. */
    279582.align 4096
    280583ptl_2_0g:
    281584        ptl2gen 512 0
    282585
    283 # Page table for pages in the 2nd gigabyte.
     586/* Page table for pages in the 2nd gigabyte. */
    284587.align 4096
    285588ptl_2_1g:
    286589        ptl2gen 512 1
    287590
    288 # Page table for pages in the 3rd gigabyte.
     591/* Page table for pages in the 3rd gigabyte. */
    289592.align 4096
    290593ptl_2_2g:
    291594        ptl2gen 512 2
    292595
    293 # Page table for pages in the 4th gigabyte.
     596/* Page table for pages in the 4th gigabyte. */
    294597.align 4096
    295598ptl_2_3g:
    296599        ptl2gen 512 3
    297600
    298 # Page table for pages in the 5th gigabyte.
     601/* Page table for pages in the 5th gigabyte. */
    299602.align 4096
    300603ptl_2_4g:
    301604        ptl2gen 512 3
    302605
    303 # Page table for pages in the 6th gigabyte.
     606/* Page table for pages in the 6th gigabyte. */
    304607.align 4096
    305608ptl_2_5g:
    306609        ptl2gen 512 3
    307610
    308 # Page table for pages in the 7th gigabyte.
     611/* Page table for pages in the 7th gigabyte. */
    309612.align 4096
    310613ptl_2_6g:
    311614        ptl2gen 512 3
    312615
    313 # Page table for pages in the 8th gigabyte.
     616/* Page table for pages in the 8th gigabyte. */
    314617.align 4096
    315618ptl_2_7g:
     
    318621.align 4096
    319622ptl_1:
    320         # Identity mapping for [0; 8G)
     623        /* Identity mapping for [0; 8G) */
    321624        .quad ptl_2_0g + (PTL_WRITABLE | PTL_PRESENT)
    322625        .quad ptl_2_1g + (PTL_WRITABLE | PTL_PRESENT)
     
    350653        .long 0
    351654
    352 extended_cpuid_msg:
     655err_extended_cpuid:
    353656        .asciz "Error: Extended CPUID not supported -- CPU is not 64-bit. System halted."
    354 long_mode_msg:
     657err_long_mode:
    355658        .asciz "Error: 64-bit long mode not supported. System halted."
    356 noexecute_msg:
     659err_noexecute:
    357660        .asciz "Error: No-execute pages not supported. System halted."
    358 fx_msg:
     661err_fx:
    359662        .asciz "Error: FXSAVE/FXRESTORE instructions not supported. System halted."
    360 sse2_msg:
     663err_sse2:
    361664        .asciz "Error: SSE2 instructions not supported. System halted."
     665
     666status_prot:
     667        .asciz "[prot] "
     668status_vesa_copy:
     669        .asciz "[vesa_copy] "
     670status_grub_cmdline:
     671        .asciz "[grub_cmdline] "
     672status_vesa_real:
     673        .asciz "[vesa_real] "
     674status_prot2:
     675        .asciz "[prot2] "
     676status_long:
     677        .asciz "[long] "
     678status_main:
     679        .asciz "[main] "
Note: See TracChangeset for help on using the changeset viewer.