Changeset b6fba84 in mainline for arch/sparc64/src/mm/tlb.c


Ignore:
Timestamp:
2006-02-24T11:58:09Z (19 years ago)
Author:
Jakub Jermar <jakub@…>
Branches:
lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
Children:
68656282
Parents:
0d3ff9a
Message:

sparc64 work.
Add more MMU helper functions and make data TLB miss handler more verbose.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • arch/sparc64/src/mm/tlb.c

    r0d3ff9a rb6fba84  
    3838#include <arch/trap/trap.h>
    3939#include <panic.h>
     40#include <arch/asm.h>
     41#include <symtab.h>
     42
     43char *context_encoding[] = {
     44        "Primary",
     45        "Secondary",
     46        "Nucleus",
     47        "Reserved"
     48};
    4049
    4150/** Initialize ITLB and DTLB.
     
    97106        dmmu_enable();
    98107        immu_enable();
     108       
     109        /*
     110         * Quick hack: map frame buffer
     111         */
     112        fr.address = 0x1C901000000ULL;
     113        pg.address = 0xc0000000;
     114
     115        tag.value = 0;
     116        tag.vpn = pg.vpn;
     117
     118        dtlb_tag_access_write(tag.value);
     119
     120        data.value = 0;
     121        data.v = true;
     122        data.size = PAGESIZE_4M;
     123        data.pfn = fr.pfn;
     124        data.l = true;
     125        data.cp = 0;
     126        data.cv = 0;
     127        data.p = true;
     128        data.w = true;
     129        data.g = true;
     130
     131        dtlb_data_in_write(data.value);
     132
    99133}
    100134
     
    108142void fast_data_access_mmu_miss(void)
    109143{
     144        tlb_sfsr_reg_t status;
     145        __address address, tpc;
     146        char *tpc_str;
     147       
     148        status.value = dtlb_sfsr_read();
     149        address = dtlb_sfar_read();
     150        tpc = tpc_read();
     151        tpc_str = get_symtab_entry(tpc);
     152
     153        printf("ASI=%B, Context=%s\n", status.asi, context_encoding[status.ct]);
     154        printf("Faulting address: %P\n", dtlb_sfar_read());
     155        printf("TPC=%P, (%s)\n", tpc, tpc_str ? tpc_str : "?");
    110156        panic("%s\n", __FUNCTION__);
    111157}
Note: See TracChangeset for help on using the changeset viewer.