Changeset 2998046 in mainline


Ignore:
Timestamp:
2005-05-25T15:41:27Z (20 years ago)
Author:
Josef Cejka <malyzelenyhnus@…>
Branches:
lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
Children:
fc9c4e1
Parents:
d5d2a3f
Message:

first version of e820 memmap

Location:
arch/ia32
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • arch/ia32/include/boot/memmap.h

    rd5d2a3f r2998046  
    4141#define MEMMAP_MEMORY_UNUSABLE  5
    4242
    43 
     43         /* size of one entry */
     44#define MEMMAP_E820_RECORD_SIZE 20
     45        /* maximum entries */
     46#define MEMMAP_E820_MAX_RECORDS 32
    4447#endif
  • arch/ia32/src/boot/memmap.S

    rd5d2a3f r2998046  
    1 
     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 */
    228
    329
     
    935.section K_TEXT_START
    1036
     37
     38E820_RECORD_SIZE = MEMMAP_E820_RECORD_SIZE
     39E820_MAX_RECORDS = MEMMAP_E820_MAX_RECORDS
     40E820_SMAP = 0x534d4150
     41
     42.global memmap_arch_init
     43
     44.code16
     45.section K_TEXT_START
     46
    1147memmap_arch_init:
    12    
    13     ret
     48       
     49e820begin:
     50        xorl    %ebx,%ebx       #at first call must be ebx==0
     51       
     52        movw    $e820table,%di
     53        movb    $E820_MAX_RECORDS,(e820counter)
     54e820loop:       
     55        movl    $E820_SMAP,%edx         # constrol sequence "SMAP"
     56        pushw   %ds
     57        popw    %es             # e820 buffer address
     58
     59        movl    $0xe820,%eax            # service
     60        movl    $E820_RECORD_SIZE,%ecx
     61        int     $0x15
     62        jc              e820end
     63       
     64       
     65        cmpl    $E820_SMAP,%eax         # verifiing BIOS
     66        jne             e820end
     67       
     68        movw    %di,%ax         # next record
     69        addw    $E820_RECORD_SIZE,%ax
     70        movw    %ax,%di
     71               
     72        decb    (e820counter)
     73        jnz             e820loop
     74       
     75e820end:
     76       
     77        movb    (e820counter),%al       
     78        negb    %al
     79        addb    $32,%al
     80        movb    %al,(e820counter) # store # of valid entries in e820counter
     81       
     82        ret
     83
     84
     85e820counter:
     86        .byte 0
     87                 
     88e820table:
     89        .space  (32*E820_RECORD_SIZE),0 #prostor na 32 zaznamu delky E820_RECORD_SIZE
Note: See TracChangeset for help on using the changeset viewer.