Fork us on GitHub Follow us on Facebook Follow us on Twitter

Changeset ddfd158 in mainline


Ignore:
Timestamp:
2013-03-16T22:49:33Z (7 years ago)
Author:
Jakub Jermar <jakub@…>
Branches:
master
Children:
89f61be
Parents:
b696cbf
Message:

Instead of asserting on the failure to find the faulting entry
in the TLB, print a warning to make life with buggy emulators easier.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • kernel/arch/mips32/src/mm/tlb.c

    rb696cbf rddfd158  
    197197        pte_t *pte;
    198198
     199        badvaddr = cp0_badvaddr_read();
     200
    199201        /*
    200202         * Locate the faulting entry in TLB.
     
    204206
    205207        /*
    206          * Fail if the entry is not in TLB.
     208         * Emit warning if the entry is not in TLB.
     209         *
     210         * We do not assert on this because this could be a manifestation of
     211         * an emulator bug, such as QEMU Bug #1128935:
     212         * https://bugs.launchpad.net/qemu/+bug/1128935 
    207213         */
    208         ASSERT(!index.p);
    209 
    210         badvaddr = cp0_badvaddr_read();
     214        if (index.p) {
     215                printf("%s: TLBP failed in exception handler (badvaddr=%#"
     216                    PRIxn ", ASID=%d).\n", __func__, badvaddr,
     217                    AS ? AS->asid : -1);
     218                return;
     219        }
    211220
    212221        pte = page_mapping_find(AS, badvaddr, true);
Note: See TracChangeset for help on using the changeset viewer.