Changeset 8ccec3c1 in mainline for arch/amd64/src/boot/memmap.S


Ignore:
Timestamp:
2006-01-04T22:41:05Z (19 years ago)
Author:
Martin Decky <martin@…>
Branches:
lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
Children:
45ba9cf
Parents:
a59e81e
Message:

remove deprecated pre-grub stuff on ia32
prepare for the same on amd64

File:
1 edited

Legend:

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

    • Property mode changed from 120000 to 100644
    ra59e81e r8ccec3c1  
    1 ../../../ia32/src/boot/memmap.S
     1/*
     2 * Copyright (C) 2005 Josef Cejka
     3 * All rights reserved.
     4 *
     5 * Redistribution and use in source and binary forms, with or without
     6 * modification, are permitted provided that the following conditions
     7 * are met:
     8 *
     9 * - Redistributions of source code must retain the above copyright
     10 *   notice, this list of conditions and the following disclaimer.
     11 * - Redistributions in binary form must reproduce the above copyright
     12 *   notice, this list of conditions and the following disclaimer in the
     13 *   documentation and/or other materials provided with the distribution.
     14 * - The name of the author may not be used to endorse or promote products
     15 *   derived from this software without specific prior written permission.
     16 *
     17 * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
     18 * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
     19 * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
     20 * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
     21 * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
     22 * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
     23 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
     24 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
     25 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
     26 * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
     27 */
     28
     29
     30#include <arch/boot/memmap.h>
     31
     32E820_SMAP = 0x534d4150
     33
     34.global memmap_arch_init
     35.global e801memorysize
     36
     37.code16
     38.section K_TEXT_START_2, "ax"
     39
     40memmap_arch_init:
     41e820begin:
     42        xorl    %ebx,%ebx                       # during first call, ebx must be 0
     43        movw    $e820table_boot,%di
     44        movb    $MEMMAP_E820_MAX_RECORDS,e820counter_boot
     45e820loop:       
     46        movl    $E820_SMAP,%edx                 # control sequence "SMAP"
     47
     48        movl    $0x0000e820,%eax                # service
     49        movl    $MEMMAP_E820_RECORD_SIZE,%ecx
     50        int     $0x15
     51        jc      e820err
     52       
     53        cmpl    $E820_SMAP,%eax                 # verifying BIOS
     54        jne     e820err
     55
     56        cmpl    $MEMMAP_E820_RECORD_SIZE,%ecx
     57        jne     e820err                         # bad record size - bug in bios
     58       
     59        movw    %di,%ax                         # next record
     60        addw    $MEMMAP_E820_RECORD_SIZE,%ax
     61        movw    %ax,%di
     62               
     63        decb    e820counter_boot                # buffer is full
     64        jz      e820end
     65       
     66        testl   %ebx,%ebx       
     67        jnz     e820loop
     68       
     69e820end:
     70        movb    $MEMMAP_E820_MAX_RECORDS,%al
     71        subb    e820counter_boot,%al
     72        movb    %al,e820counter_boot            # store # of valid entries in e820counter
     73
     74        jmp     e801begin
     75
     76e820err:
     77        movb    $0,e820counter_boot
     78
     79# method e801 - get size of memory
     80
     81e801begin:
     82        xorw    %dx,%dx
     83        xorw    %cx,%cx
     84        xorw    %bx,%bx
     85        movw    $0xe801,%ax
     86        stc
     87        int     $0x15
     88       
     89        jc      e801end
     90       
     91        # fix problem with some BIOSes which use ax:bx rather than cx:dx
     92        testw   %cx,%cx
     93        jnz     e801cxdx
     94        testw   %dx,%dx
     95        jnz     e801cxdx
     96
     97        movw    %ax,%cx
     98        movw    %bx,%dx
     99       
     100e801cxdx:
     101        andl    $0xffff,%edx
     102        shll    $6,%edx
     103        andl    $0xffff,%ecx
     104        addl    %ecx,%edx
     105        addl    $0x0400,%edx                    # add lower 1 MB - it's not included by e801 method
     106        movl    %edx,e801memorysize
     107e801end:
     108        ret
     109
     110
     111.section K_DATA_START, "aw", @progbits
     112
     113#memory size in 1 kb chunks
     114e801memorysize:
     115        .long   0
Note: See TracChangeset for help on using the changeset viewer.