Ignore:
File:
1 edited

Legend:

Unmodified
Added
Removed
  • kernel/arch/ia64/src/mm/page.c

    rd99c1d2 r98000fb  
    3939#include <arch/mm/asid.h>
    4040#include <arch/mm/vhpt.h>
    41 #include <typedefs.h>
     41#include <arch/types.h>
    4242#include <print.h>
    4343#include <mm/page.h>
     
    6363void set_environment(void)
    6464{
    65         region_register_t rr;
    66         pta_register_t pta;
     65        region_register rr;
     66        pta_register pta;
    6767        int i;
    6868#ifdef CONFIG_VHPT
     
    7171
    7272        /*
    73          * Set up kernel region registers.
    74          * VRN_KERNEL has already been set in start.S.
    75          * For paranoia reasons, we set it again.
     73         * First set up kernel region register.
     74         * This is redundant (see start.S) but we keep it here just for sure.
     75         */
     76        rr.word = rr_read(VRN_KERNEL);
     77        rr.map.ve = 0;                  /* disable VHPT walker */
     78        rr.map.ps = PAGE_WIDTH;
     79        rr.map.rid = ASID2RID(ASID_KERNEL, VRN_KERNEL);
     80        rr_write(VRN_KERNEL, rr.word);
     81        srlz_i();
     82        srlz_d();
     83
     84        /*
     85         * And setup the rest of region register.
    7686         */
    7787        for(i = 0; i < REGION_REGISTERS; i++) {
     88                /* skip kernel rr */
     89                if (i == VRN_KERNEL)
     90                        continue;
     91       
    7892                rr.word = rr_read(i);
    7993                rr.map.ve = 0;          /* disable VHPT walker */
    80                 rr.map.rid = ASID2RID(ASID_KERNEL, i);
     94                rr.map.rid = RID_KERNEL;
    8195                rr.map.ps = PAGE_WIDTH;
    8296                rr_write(i, rr.word);
     
    117131vhpt_entry_t *vhpt_hash(uintptr_t page, asid_t asid)
    118132{
    119         region_register_t rr_save, rr;
     133        region_register rr_save, rr;
    120134        size_t vrn;
    121135        rid_t rid;
     
    162176bool vhpt_compare(uintptr_t page, asid_t asid, vhpt_entry_t *v)
    163177{
    164         region_register_t rr_save, rr;
     178        region_register rr_save, rr;   
    165179        size_t vrn;
    166180        rid_t rid;
     
    209223    int flags)
    210224{
    211         region_register_t rr_save, rr;
     225        region_register rr_save, rr;   
    212226        size_t vrn;
    213227        rid_t rid;
     
    243257        v->present.ma = (flags & PAGE_CACHEABLE) ?
    244258            MA_WRITEBACK : MA_UNCACHEABLE;
    245         v->present.a = false;  /* not accessed */
    246         v->present.d = false;  /* not dirty */
     259        v->present.a = false;   /* not accessed */
     260        v->present.d = false;   /* not dirty */
    247261        v->present.pl = (flags & PAGE_USER) ? PL_USER : PL_KERNEL;
    248262        v->present.ar = (flags & PAGE_WRITE) ? AR_WRITE : AR_READ;
    249263        v->present.ar |= (flags & PAGE_EXEC) ? AR_EXECUTE : 0;
    250264        v->present.ppn = frame >> PPN_SHIFT;
    251         v->present.ed = false;  /* exception not deffered */
     265        v->present.ed = false;  /* exception not deffered */
    252266        v->present.ps = PAGE_WIDTH;
    253267        v->present.key = 0;
Note: See TracChangeset for help on using the changeset viewer.