Changeset 328f2934 in mainline for arch


Ignore:
Timestamp:
2005-12-04T19:37:13Z (20 years ago)
Author:
Sergey Bondari <bondari@…>
Branches:
lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
Children:
cf585c9
Parents:
d7ac642
Message:

Buddy allocator for physical memory complete implementation.
Tested on IA32, AMD64, MIPS32. RWLock Test #5 is not passed.
NOTE: Other architectures could be broken (but should not be)

Location:
arch
Files:
7 edited

Legend:

Unmodified
Added
Removed
  • arch/amd64/src/mm/page.c

    rd7ac642 r328f2934  
    4545
    4646        if (config.cpu_active == 1) {
    47                 dba = frame_alloc(FRAME_KA | FRAME_PANIC);
     47                dba = frame_alloc(FRAME_KA | FRAME_PANIC, 0);
    4848                memsetb(dba, PAGE_SIZE, 0);
    4949
     
    6868                 */
    6969
    70                 dba = frame_alloc(FRAME_KA | FRAME_PANIC);
     70                dba = frame_alloc(FRAME_KA | FRAME_PANIC, 0);
    7171                memcpy((void *)dba, (void *)bootstrap_dba , PAGE_SIZE);
    7272                write_cr3(KA2PA(dba));
  • arch/ia32/src/mm/frame.c

    rd7ac642 r328f2934  
    3434#include <arch/boot/memmap.h>
    3535#include <panic.h>
     36#include <debug.h>
    3637
    3738size_t hardcoded_unmapped_ktext_size = 0;
     
    4142{
    4243        zone_t *z;
     44        __address start, stop;
     45        size_t size;
    4346        __u8 i;
    4447       
    4548        if (config.cpu_active == 1) {
     49
     50                /* Reserve frame 0 (BIOS data) */
     51                frame_region_not_free(0, FRAME_SIZE);
     52               
     53                /* Reserve real mode bootstrap memory */
     54                frame_region_not_free(BOOTSTRAP_OFFSET, hardcoded_unmapped_ktext_size + hardcoded_unmapped_kdata_size);
     55               
    4656                for (i=0;i<e820counter;i++) {
    4757                        if (e820table[i].type==MEMMAP_MEMORY_AVAILABLE) {
    48                                 z = zone_create(e820table[i].base_address, e820table[i].size & ~(FRAME_SIZE-1), 0);
    49                                 if (!z) {
    50                                         panic("Cannot allocate zone (%dB).\n", e820table[i].size & ~(FRAME_SIZE-1));
    51                                 }
    52                                 zone_attach(z);
     58                                zone_create_in_region(e820table[i].base_address,  e820table[i].size & ~(FRAME_SIZE-1));
    5359                        }
    5460                }
    55                
    56                 frame_not_free(0);
    57 
    58                 /* Reserve real mode bootstrap memory */
    59                 frame_region_not_free(BOOTSTRAP_OFFSET, BOOTSTRAP_OFFSET + hardcoded_unmapped_ktext_size + hardcoded_unmapped_kdata_size);
    6061        }
    6162}
  • arch/ia32/src/mm/page.c

    rd7ac642 r328f2934  
    4848
    4949        if (config.cpu_active == 1) {
    50                 dba = frame_alloc(FRAME_KA | FRAME_PANIC);
     50                dba = frame_alloc(FRAME_KA | FRAME_PANIC, 0);
    5151                memsetb(dba, PAGE_SIZE, 0);
    5252
     
    7070                 */
    7171
    72                 dba = frame_alloc(FRAME_KA | FRAME_PANIC);
     72                dba = frame_alloc(FRAME_KA | FRAME_PANIC, 0);
    7373                memcpy((void *)dba, (void *)bootstrap_dba , PAGE_SIZE);
    7474                write_cr3(KA2PA(dba));
  • arch/ia64/src/mm/frame.c

    rd7ac642 r328f2934  
    3434void frame_arch_init(void)
    3535{
    36         zone_t *z;
    37        
    38         z = zone_create(0, config.memory_size, 0);
    39         if (!z) {
    40                 panic("Can't allocate zone (%dB).\n", config.memory_size);
    41         }
    42         zone_attach(z);
     36        zone_create_in_region(0, config.memory_size & ~(FRAME_SIZE-1));
    4337}
  • arch/mips32/src/mm/frame.c

    rd7ac642 r328f2934  
    3333#include <config.h>
    3434#include <panic.h>
     35#include <print.h>
    3536
    3637void frame_arch_init(void)
    3738{
    38         zone_t *z;
    39        
    40         z = zone_create(0, config.memory_size, 0);
    41         if (!z) {
    42                 panic("Can't allocate zone (%dB).\n", config.memory_size);
    43         }
    44         zone_attach(z);
    45 
    4639        /* Disable Everything until load address */
    47         frame_region_not_free(0, KA2PA(KERNEL_LOAD_ADDRESS));
     40        frame_region_not_free(0, KA2PA(KERNEL_LOAD_ADDRESS) + FRAME_SIZE);
     41        zone_create_in_region(0, config.memory_size & ~(FRAME_SIZE-1));
    4842}
  • arch/mips32/src/mm/page.c

    rd7ac642 r328f2934  
    4040        __address ptl0;
    4141       
    42         ptl0 = frame_alloc(FRAME_KA | FRAME_PANIC);
     42        ptl0 = frame_alloc(FRAME_KA | FRAME_PANIC, 0);
    4343        memsetb(ptl0, FRAME_SIZE, 0);
    4444       
  • arch/ppc32/src/mm/frame.c

    rd7ac642 r328f2934  
    3434void frame_arch_init(void)
    3535{
    36         zone_t *z;
    37 
    38         z = zone_create(0, config.memory_size & ~(FRAME_SIZE-1), 0);
    39         if (!z) {
    40                 panic("Can't allocate zone (%dB).\n", config.memory_size & ~(FRAME_SIZE-1));
    41         }
    42         zone_attach(z);
     36        zone_create_in_region(0, config.memory_size & ~(FRAME_SIZE-1));
    4337}
Note: See TracChangeset for help on using the changeset viewer.