Changeset db3341e in mainline for arch/amd64/src/mm/page.c


Ignore:
Timestamp:
2005-09-01T14:28:00Z (20 years ago)
Author:
Ondrej Palkovsky <ondrap@…>
Branches:
lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
Children:
623ba26c
Parents:
1dde3b61
Message:

Fixed typo in 'outb' instruction.
Paging basically working.

File:
1 edited

Legend:

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

    r1dde3b61 rdb3341e  
    2828
    2929#include <mm/page.h>
     30#include <mm/frame.h>
    3031#include <arch/mm/page.h>
     32#include <arch/interrupt.h>
     33#include <arch/asm.h>
     34#include <config.h>
     35
     36#include <memstr.h>
     37
     38
     39__address bootstrap_dba;
    3140
    3241void page_arch_init(void)
    3342{
     43        __address dba;
     44        count_t i;
     45
     46        if (config.cpu_active == 1) {
     47                dba = frame_alloc(FRAME_KA | FRAME_PANIC);
     48                memsetb(dba, PAGE_SIZE, 0);
     49
     50                bootstrap_dba = dba;
     51
     52                /*
     53                 * Identity mapping for all frames.
     54                 * PA2KA(identity) mapping for all frames.
     55                 */
     56                for (i = 0; i < frames; i++) {
     57                        map_page_to_frame(i * PAGE_SIZE, i * PAGE_SIZE, PAGE_CACHEABLE | PAGE_EXEC, KA2PA(dba));
     58                        map_page_to_frame(PA2KA(i * PAGE_SIZE), i * PAGE_SIZE, PAGE_CACHEABLE | PAGE_EXEC, KA2PA(dba));
     59                }
     60
     61                trap_register(14, page_fault);
     62                write_cr3(KA2PA(dba));
     63        }
     64        else {
     65                /*
     66                 * Application processors need to create their own view of the
     67                 * virtual address space. Because of that, each AP copies
     68                 * already-initialized paging information from the bootstrap
     69                 * processor and adjusts it to fulfill its needs.
     70                 */
     71
     72                dba = frame_alloc(FRAME_KA | FRAME_PANIC);
     73                memcpy((void *)dba, (void *)bootstrap_dba , PAGE_SIZE);
     74                write_cr3(KA2PA(dba));
     75        }
    3476}
Note: See TracChangeset for help on using the changeset viewer.