OpenCores
URL https://opencores.org/ocsvn/eco32/eco32/trunk

Subversion Repositories eco32

Compare Revisions

  • This comparison shows the changes necessary to convert path
    /eco32/trunk/hwtests/xcptest
    from Rev 39 to Rev 80
    Reverse comparison

Rev 39 → Rev 80

/start.h
13,6 → 13,7
Word tlbIndex; /* TLB index register */
Word tlbHi; /* TLB EntryHi register */
Word tlbLo; /* TLB EntryLo register */
Word badAddr; /* bad address register */
} InterruptContext;
 
 
/main.c
28,7 → 28,9
/* TLB EntryHi */
0x9ABCDEF0,
/* TLB EntryLo */
0x0FEDCBA9
0x0FEDCBA9,
/* bad address */
0xDEADBEEF,
};
 
static InterruptContext ic;
47,6 → 49,8
/* 9 */ "interrupt mask bits clobbered",
/* 10 */ "ISR entry was 'user miss'",
/* 11 */ "ISR entry was not 'user miss'",
/* 12 */ "bad address register clobbered",
/* 13 */ "bad address register incorrect",
};
 
 
93,10 → 97,13
int expectedException,
Bool execInUserMode,
Bool clobberEntryHi,
Bool shouldTakeUserMiss) {
Bool shouldTakeUserMiss,
Bool shouldSetBadAddr,
Word expectedBadAddr) {
unsigned int res1, res2;
int result;
Word *locus;
Word badAddr;
 
if (execInUserMode) {
initial.psw |= 1 << 26;
110,6 → 117,7
} else {
locus = (Word *) ic.reg[30];
}
badAddr = ic.badAddr;
if (!clobberEntryHi) {
check(&res1, &res2, initial.tlbHi);
} else {
138,6 → 146,12
if (locus != expectedLocus) {
result = 3;
} else
if (!shouldSetBadAddr && badAddr != initial.badAddr) {
result = 12;
} else
if (shouldSetBadAddr && badAddr != expectedBadAddr) {
result = 13;
} else
if (res2 != 0x00000001) {
result = 4;
} else
168,81 → 182,83
Bool execInUserMode;
Bool clobberEntryHi;
Bool shouldTakeUserMiss;
Bool shouldSetBadAddr;
Word expectedBadAddr;
} tests[] = {
{ "Trap instr test:\t\t\t",
xtest1, &xtest1x, 20, false, false, false },
xtest1, &xtest1x, 20, false, false, false, false, 0 },
{ "Illegal instr test:\t\t\t",
xtest2, &xtest2x, 17, false, false, false },
xtest2, &xtest2x, 17, false, false, false, false, 0 },
{ "Divide instr test 1 (div):\t\t",
xtest3, &xtest3x, 19, false, false, false },
xtest3, &xtest3x, 19, false, false, false, false, 0 },
{ "Divide instr test 2 (divi):\t\t",
xtest4, &xtest4x, 19, false, false, false },
xtest4, &xtest4x, 19, false, false, false, false, 0 },
{ "Divide instr test 3 (divu):\t\t",
xtest5, &xtest5x, 19, false, false, false },
xtest5, &xtest5x, 19, false, false, false, false, 0 },
{ "Divide instr test 4 (divui):\t\t",
xtest6, &xtest6x, 19, false, false, false },
xtest6, &xtest6x, 19, false, false, false, false, 0 },
{ "Divide instr test 5 (rem):\t\t",
xtest7, &xtest7x, 19, false, false, false },
xtest7, &xtest7x, 19, false, false, false, false, 0 },
{ "Divide instr test 6 (remi):\t\t",
xtest8, &xtest8x, 19, false, false, false },
xtest8, &xtest8x, 19, false, false, false, false, 0 },
{ "Divide instr test 7 (remu):\t\t",
xtest9, &xtest9x, 19, false, false, false },
xtest9, &xtest9x, 19, false, false, false, false, 0 },
{ "Divide instr test 8 (remui):\t\t",
xtest10, &xtest10x, 19, false, false, false },
xtest10, &xtest10x, 19, false, false, false, false, 0 },
{ "Bus timeout test 1 (fetch):\t\t",
xtest11, &xtest11x, 16, false, false, false },
xtest11, &xtest11x, 16, false, false, false, false, 0 },
{ "Bus timeout test 2 (load):\t\t",
xtest12, &xtest12x, 16, false, false, false },
xtest12, &xtest12x, 16, false, false, false, false, 0 },
{ "Bus timeout test 3 (store):\t\t",
xtest13, &xtest13x, 16, false, false, false },
xtest13, &xtest13x, 16, false, false, false, false, 0 },
{ "Privileged instr test 1 (rfx):\t\t",
xtest14, &xtest14x, 18, true, false, false },
xtest14, &xtest14x, 18, true, false, false, false, 0 },
{ "Privileged instr test 2 (mvts):\t\t",
xtest15, &xtest15x, 18, true, false, false },
xtest15, &xtest15x, 18, true, false, false, false, 0 },
{ "Privileged instr test 3 (tb..):\t\t",
xtest16, &xtest16x, 18, true, false, false },
xtest16, &xtest16x, 18, true, false, false, false, 0 },
{ "Privileged address test 1 (fetch):\t",
xtest17, &xtest17x, 25, true, false, false },
xtest17, &xtest17x, 25, true, false, false, true, 0xffffff10 },
{ "Privileged address test 2 (load):\t",
xtest18, &xtest18x, 25, true, false, false },
xtest18, &xtest18x, 25, true, false, false, true, 0xffffff10 },
{ "Privileged address test 3 (store):\t",
xtest19, &xtest19x, 25, true, false, false },
xtest19, &xtest19x, 25, true, false, false, true, 0xffffff10 },
{ "Illegal address test 1 (fetch):\t\t",
xtest20, &xtest20x, 24, false, false, false },
xtest20, &xtest20x, 24, false, false, false, true, 0x11111122 },
{ "Illegal address test 2 (fetch):\t\t",
xtest21, &xtest21x, 24, false, false, false },
xtest21, &xtest21x, 24, false, false, false, true, 0x00000021 },
{ "Illegal address test 3 (ldw):\t\t",
xtest22, &xtest22x, 24, false, false, false },
xtest22, &xtest22x, 24, false, false, false, true, 0xffffff12 },
{ "Illegal address test 4 (ldw):\t\t",
xtest23, &xtest23x, 24, false, false, false },
xtest23, &xtest23x, 24, false, false, false, true, 0xffffff11 },
{ "Illegal address test 5 (ldh):\t\t",
xtest24, &xtest24x, 24, false, false, false },
xtest24, &xtest24x, 24, false, false, false, true, 0xffffff11 },
{ "Illegal address test 6 (stw):\t\t",
xtest25, &xtest25x, 24, false, false, false },
xtest25, &xtest25x, 24, false, false, false, true, 0xffffff12 },
{ "Illegal address test 7 (stw):\t\t",
xtest26, &xtest26x, 24, false, false, false },
xtest26, &xtest26x, 24, false, false, false, true, 0xffffff11 },
{ "Illegal address test 8 (sth):\t\t",
xtest27, &xtest27x, 24, false, false, false },
xtest27, &xtest27x, 24, false, false, false, true, 0xffffff11 },
{ "TLB user miss test 1 (fetch):\t\t",
xtest28, &xtest28x, 21, false, true, true },
xtest28, &xtest28x, 21, false, true, true, true, 0x33333314 },
{ "TLB user miss test 2 (load):\t\t",
xtest29, &xtest29x, 21, false, true, true },
xtest29, &xtest29x, 21, false, true, true, true, 0x33333314 },
{ "TLB user miss test 3 (store):\t\t",
xtest30, &xtest30x, 21, false, true, true },
xtest30, &xtest30x, 21, false, true, true, true, 0x33333314 },
{ "TLB kernel miss test 1 (fetch):\t\t",
xtest31, &xtest31x, 21, false, true, false },
xtest31, &xtest31x, 21, false, true, false, true, 0xbbbbbb1c },
{ "TLB kernel miss test 2 (load):\t\t",
xtest32, &xtest32x, 21, false, true, false },
xtest32, &xtest32x, 21, false, true, false, true, 0xbbbbbb1c },
{ "TLB kernel miss test 3 (store):\t\t",
xtest33, &xtest33x, 21, false, true, false },
xtest33, &xtest33x, 21, false, true, false, true, 0xbbbbbb1c },
{ "TLB invalid test 1 (fetch):\t\t",
xtest34, &xtest34x, 23, false, true, false },
xtest34, &xtest34x, 23, false, true, false, true, 0xbbbbbb1c },
{ "TLB invalid test 2 (load):\t\t",
xtest35, &xtest35x, 23, false, true, false },
xtest35, &xtest35x, 23, false, true, false, true, 0xbbbbbb1c },
{ "TLB invalid test 3 (store):\t\t",
xtest36, &xtest36x, 23, false, true, false },
xtest36, &xtest36x, 23, false, true, false, true, 0xbbbbbb1c },
{ "TLB wrtprot test (store):\t\t",
xtest37, &xtest37x, 22, false, true, false },
xtest37, &xtest37x, 22, false, true, false, true, 0xbbbbbb1c },
};
 
 
258,7 → 274,9
tests[i].exception,
tests[i].execInUserMode,
tests[i].clobberEntryHi,
tests[i].shouldTakeUserMiss);
tests[i].shouldTakeUserMiss,
tests[i].shouldSetBadAddr,
tests[i].expectedBadAddr);
if (result == 0) {
printf("ok");
} else {
/start.s
10,6 → 10,7
.set TLB_ENTRY_HI,2 ; reg # of TLB EntryHi
.set TLB_ENTRY_LO,3 ; reg # of TLB EntryLo
.set TLB_ENTRIES,32 ; number of TLB entries
.set BAD_ADDRESS,4 ; reg # of bad address reg
 
;***************************************************************
 
224,6 → 225,8
mvts $8,TLB_ENTRY_HI
ldw $8,$28,35*4 ; tlbEntryLo
mvts $8,TLB_ENTRY_LO
ldw $8,$28,36*4 ; badAddress
mvts $8,BAD_ADDRESS
;ldw $0,$28,0*4 ; registers
ldw $1,$28,1*4
ldw $2,$28,2*4
285,6 → 288,8
mvts $8,TLB_ENTRY_HI
ldw $8,$28,35*4 ; tlbEntryLo
mvts $8,TLB_ENTRY_LO
ldw $8,$28,36*4 ; badAddress
mvts $8,BAD_ADDRESS
;ldw $0,$28,0*4 ; registers
ldw $1,$28,1*4
ldw $2,$28,2*4
346,6 → 351,8
mvts $8,TLB_ENTRY_HI
ldw $8,$28,35*4 ; tlbEntryLo
mvts $8,TLB_ENTRY_LO
ldw $8,$28,36*4 ; badAddress
mvts $8,BAD_ADDRESS
;ldw $0,$28,0*4 ; registers
ldw $1,$28,1*4
ldw $2,$28,2*4
407,6 → 414,8
mvts $8,TLB_ENTRY_HI
ldw $8,$28,35*4 ; tlbEntryLo
mvts $8,TLB_ENTRY_LO
ldw $8,$28,36*4 ; badAddress
mvts $8,BAD_ADDRESS
;ldw $0,$28,0*4 ; registers
ldw $1,$28,1*4
ldw $2,$28,2*4
468,6 → 477,8
mvts $8,TLB_ENTRY_HI
ldw $8,$28,35*4 ; tlbEntryLo
mvts $8,TLB_ENTRY_LO
ldw $8,$28,36*4 ; badAddress
mvts $8,BAD_ADDRESS
;ldw $0,$28,0*4 ; registers
ldw $1,$28,1*4
ldw $2,$28,2*4
529,6 → 540,8
mvts $8,TLB_ENTRY_HI
ldw $8,$28,35*4 ; tlbEntryLo
mvts $8,TLB_ENTRY_LO
ldw $8,$28,36*4 ; badAddress
mvts $8,BAD_ADDRESS
;ldw $0,$28,0*4 ; registers
ldw $1,$28,1*4
ldw $2,$28,2*4
590,6 → 603,8
mvts $8,TLB_ENTRY_HI
ldw $8,$28,35*4 ; tlbEntryLo
mvts $8,TLB_ENTRY_LO
ldw $8,$28,36*4 ; badAddress
mvts $8,BAD_ADDRESS
;ldw $0,$28,0*4 ; registers
ldw $1,$28,1*4
ldw $2,$28,2*4
651,6 → 666,8
mvts $8,TLB_ENTRY_HI
ldw $8,$28,35*4 ; tlbEntryLo
mvts $8,TLB_ENTRY_LO
ldw $8,$28,36*4 ; badAddress
mvts $8,BAD_ADDRESS
;ldw $0,$28,0*4 ; registers
ldw $1,$28,1*4
ldw $2,$28,2*4
712,6 → 729,8
mvts $8,TLB_ENTRY_HI
ldw $8,$28,35*4 ; tlbEntryLo
mvts $8,TLB_ENTRY_LO
ldw $8,$28,36*4 ; badAddress
mvts $8,BAD_ADDRESS
;ldw $0,$28,0*4 ; registers
ldw $1,$28,1*4
ldw $2,$28,2*4
773,6 → 792,8
mvts $8,TLB_ENTRY_HI
ldw $8,$28,35*4 ; tlbEntryLo
mvts $8,TLB_ENTRY_LO
ldw $8,$28,36*4 ; badAddress
mvts $8,BAD_ADDRESS
;ldw $0,$28,0*4 ; registers
ldw $1,$28,1*4
ldw $2,$28,2*4
834,6 → 855,8
mvts $8,TLB_ENTRY_HI
ldw $8,$28,35*4 ; tlbEntryLo
mvts $8,TLB_ENTRY_LO
ldw $8,$28,36*4 ; badAddress
mvts $8,BAD_ADDRESS
;ldw $0,$28,0*4 ; registers
ldw $1,$28,1*4
ldw $2,$28,2*4
896,6 → 919,8
mvts $8,TLB_ENTRY_HI
ldw $8,$28,35*4 ; tlbEntryLo
mvts $8,TLB_ENTRY_LO
ldw $8,$28,36*4 ; badAddress
mvts $8,BAD_ADDRESS
;ldw $0,$28,0*4 ; registers
ldw $1,$28,1*4
ldw $2,$28,2*4
957,6 → 982,8
mvts $8,TLB_ENTRY_HI
ldw $8,$28,35*4 ; tlbEntryLo
mvts $8,TLB_ENTRY_LO
ldw $8,$28,36*4 ; badAddress
mvts $8,BAD_ADDRESS
;ldw $0,$28,0*4 ; registers
ldw $1,$28,1*4
ldw $2,$28,2*4
1040,6 → 1067,8
mvts $8,TLB_ENTRY_HI
ldw $8,$28,35*4 ; tlbEntryLo
mvts $8,TLB_ENTRY_LO
ldw $8,$28,36*4 ; badAddress
mvts $8,BAD_ADDRESS
;ldw $0,$28,0*4 ; registers
ldw $1,$28,1*4
ldw $2,$28,2*4
1123,6 → 1152,8
mvts $8,TLB_ENTRY_HI
ldw $8,$28,35*4 ; tlbEntryLo
mvts $8,TLB_ENTRY_LO
ldw $8,$28,36*4 ; badAddress
mvts $8,BAD_ADDRESS
;ldw $0,$28,0*4 ; registers
ldw $1,$28,1*4
ldw $2,$28,2*4
1206,6 → 1237,8
mvts $8,TLB_ENTRY_HI
ldw $8,$28,35*4 ; tlbEntryLo
mvts $8,TLB_ENTRY_LO
ldw $8,$28,36*4 ; badAddress
mvts $8,BAD_ADDRESS
;ldw $0,$28,0*4 ; registers
ldw $1,$28,1*4
ldw $2,$28,2*4
1289,6 → 1322,8
mvts $8,TLB_ENTRY_HI
ldw $8,$28,35*4 ; tlbEntryLo
mvts $8,TLB_ENTRY_LO
ldw $8,$28,36*4 ; badAddress
mvts $8,BAD_ADDRESS
;ldw $0,$28,0*4 ; registers
ldw $1,$28,1*4
ldw $2,$28,2*4
1373,6 → 1408,8
mvts $8,TLB_ENTRY_HI
ldw $8,$28,35*4 ; tlbEntryLo
mvts $8,TLB_ENTRY_LO
ldw $8,$28,36*4 ; badAddress
mvts $8,BAD_ADDRESS
;ldw $0,$28,0*4 ; registers
ldw $1,$28,1*4
ldw $2,$28,2*4
1456,6 → 1493,8
mvts $8,TLB_ENTRY_HI
ldw $8,$28,35*4 ; tlbEntryLo
mvts $8,TLB_ENTRY_LO
ldw $8,$28,36*4 ; badAddress
mvts $8,BAD_ADDRESS
;ldw $0,$28,0*4 ; registers
ldw $1,$28,1*4
ldw $2,$28,2*4
1517,6 → 1556,8
mvts $8,TLB_ENTRY_HI
ldw $8,$28,35*4 ; tlbEntryLo
mvts $8,TLB_ENTRY_LO
ldw $8,$28,36*4 ; badAddress
mvts $8,BAD_ADDRESS
;ldw $0,$28,0*4 ; registers
ldw $1,$28,1*4
ldw $2,$28,2*4
1579,6 → 1620,8
mvts $8,TLB_ENTRY_HI
ldw $8,$28,35*4 ; tlbEntryLo
mvts $8,TLB_ENTRY_LO
ldw $8,$28,36*4 ; badAddress
mvts $8,BAD_ADDRESS
;ldw $0,$28,0*4 ; registers
ldw $1,$28,1*4
ldw $2,$28,2*4
1641,6 → 1684,8
mvts $8,TLB_ENTRY_HI
ldw $8,$28,35*4 ; tlbEntryLo
mvts $8,TLB_ENTRY_LO
ldw $8,$28,36*4 ; badAddress
mvts $8,BAD_ADDRESS
;ldw $0,$28,0*4 ; registers
ldw $1,$28,1*4
ldw $2,$28,2*4
1702,6 → 1747,8
mvts $8,TLB_ENTRY_HI
ldw $8,$28,35*4 ; tlbEntryLo
mvts $8,TLB_ENTRY_LO
ldw $8,$28,36*4 ; badAddress
mvts $8,BAD_ADDRESS
;ldw $0,$28,0*4 ; registers
ldw $1,$28,1*4
ldw $2,$28,2*4
1763,6 → 1810,8
mvts $8,TLB_ENTRY_HI
ldw $8,$28,35*4 ; tlbEntryLo
mvts $8,TLB_ENTRY_LO
ldw $8,$28,36*4 ; badAddress
mvts $8,BAD_ADDRESS
;ldw $0,$28,0*4 ; registers
ldw $1,$28,1*4
ldw $2,$28,2*4
1824,6 → 1873,8
mvts $8,TLB_ENTRY_HI
ldw $8,$28,35*4 ; tlbEntryLo
mvts $8,TLB_ENTRY_LO
ldw $8,$28,36*4 ; badAddress
mvts $8,BAD_ADDRESS
;ldw $0,$28,0*4 ; registers
ldw $1,$28,1*4
ldw $2,$28,2*4
1885,6 → 1936,8
mvts $8,TLB_ENTRY_HI
ldw $8,$28,35*4 ; tlbEntryLo
mvts $8,TLB_ENTRY_LO
ldw $8,$28,36*4 ; badAddress
mvts $8,BAD_ADDRESS
;ldw $0,$28,0*4 ; registers
ldw $1,$28,1*4
ldw $2,$28,2*4
1946,6 → 1999,8
mvts $8,TLB_ENTRY_HI
ldw $8,$28,35*4 ; tlbEntryLo
mvts $8,TLB_ENTRY_LO
ldw $8,$28,36*4 ; badAddress
mvts $8,BAD_ADDRESS
;ldw $0,$28,0*4 ; registers
ldw $1,$28,1*4
ldw $2,$28,2*4
2007,6 → 2062,8
mvts $8,TLB_ENTRY_HI
ldw $8,$28,35*4 ; tlbEntryLo
mvts $8,TLB_ENTRY_LO
ldw $8,$28,36*4 ; badAddress
mvts $8,BAD_ADDRESS
;ldw $0,$28,0*4 ; registers
ldw $1,$28,1*4
ldw $2,$28,2*4
2069,6 → 2126,8
mvts $8,TLB_ENTRY_HI
ldw $8,$28,35*4 ; tlbEntryLo
mvts $8,TLB_ENTRY_LO
ldw $8,$28,36*4 ; badAddress
mvts $8,BAD_ADDRESS
;ldw $0,$28,0*4 ; registers
ldw $1,$28,1*4
ldw $2,$28,2*4
2130,6 → 2189,8
mvts $8,TLB_ENTRY_HI
ldw $8,$28,35*4 ; tlbEntryLo
mvts $8,TLB_ENTRY_LO
ldw $8,$28,36*4 ; badAddress
mvts $8,BAD_ADDRESS
;ldw $0,$28,0*4 ; registers
ldw $1,$28,1*4
ldw $2,$28,2*4
2191,6 → 2252,8
mvts $8,TLB_ENTRY_HI
ldw $8,$28,35*4 ; tlbEntryLo
mvts $8,TLB_ENTRY_LO
ldw $8,$28,36*4 ; badAddress
mvts $8,BAD_ADDRESS
;ldw $0,$28,0*4 ; registers
ldw $1,$28,1*4
ldw $2,$28,2*4
2253,6 → 2316,8
mvts $8,TLB_ENTRY_HI
ldw $8,$28,35*4 ; tlbEntryLo
mvts $8,TLB_ENTRY_LO
ldw $8,$28,36*4 ; badAddress
mvts $8,BAD_ADDRESS
;ldw $0,$28,0*4 ; registers
ldw $1,$28,1*4
ldw $2,$28,2*4
2314,6 → 2379,8
mvts $8,TLB_ENTRY_HI
ldw $8,$28,35*4 ; tlbEntryLo
mvts $8,TLB_ENTRY_LO
ldw $8,$28,36*4 ; badAddress
mvts $8,BAD_ADDRESS
;ldw $0,$28,0*4 ; registers
ldw $1,$28,1*4
ldw $2,$28,2*4
2383,6 → 2450,8
mvts $8,TLB_ENTRY_HI
ldw $8,$28,35*4 ; tlbEntryLo
mvts $8,TLB_ENTRY_LO
ldw $8,$28,36*4 ; badAddress
mvts $8,BAD_ADDRESS
;ldw $0,$28,0*4 ; registers
ldw $1,$28,1*4
ldw $2,$28,2*4
2453,6 → 2522,8
mvts $8,TLB_ENTRY_HI
ldw $8,$28,35*4 ; tlbEntryLo
mvts $8,TLB_ENTRY_LO
ldw $8,$28,36*4 ; badAddress
mvts $8,BAD_ADDRESS
;ldw $0,$28,0*4 ; registers
ldw $1,$28,1*4
ldw $2,$28,2*4
2522,6 → 2593,8
mvts $8,TLB_ENTRY_HI
ldw $8,$28,35*4 ; tlbEntryLo
mvts $8,TLB_ENTRY_LO
ldw $8,$28,36*4 ; badAddress
mvts $8,BAD_ADDRESS
;ldw $0,$28,0*4 ; registers
ldw $1,$28,1*4
ldw $2,$28,2*4
2591,6 → 2664,8
mvts $8,TLB_ENTRY_HI
ldw $8,$28,35*4 ; tlbEntryLo
mvts $8,TLB_ENTRY_LO
ldw $8,$28,36*4 ; badAddress
mvts $8,BAD_ADDRESS
;ldw $0,$28,0*4 ; registers
ldw $1,$28,1*4
ldw $2,$28,2*4
2720,6 → 2795,8
stw $8,$28,34*4 ; tlbEntryHi
mvfs $8,TLB_ENTRY_LO
stw $8,$28,35*4 ; tlbEntryLo
mvfs $8,BAD_ADDRESS
stw $8,$28,36*4 ; badAddress
.syn
add $8,$0,returnState
ldw $4,$8,0*4 ; pointer to interrupt context

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.