From 4301e4cd08018eb56b4f196afcce9a8311f390b4 Mon Sep 17 00:00:00 2001 From: Ali Saidi Date: Tue, 23 Jan 2007 15:50:03 -0500 Subject: use pstate.am to mask off PC/NPC where it needs to +be check writability of tlb cache entry before using update tagaccess in places I forgot to move the tlb privileged test up since it is higher priority src/arch/sparc/faults.cc: save only 32 bits of PC/NPC if Pstate.am is set src/arch/sparc/isa/decoder.isa: return only 32 bits of PC/NPC if Pstate.am is set increment cleanwin correctly src/arch/sparc/tlb.cc: check writability of cache entry update tagaccess in a few more places move the privileged test up since it is higher priority src/cpu/exetrace.cc: mask off upper bits of pc if pstate.am is set before comparing to legion --HG-- extra : convert_revision : 02a51c141ee3f9a2600c28eac018ea7216f3655c --- src/arch/sparc/isa/decoder.isa | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) (limited to 'src/arch/sparc/isa') diff --git a/src/arch/sparc/isa/decoder.isa b/src/arch/sparc/isa/decoder.isa index 175866eba..548953982 100644 --- a/src/arch/sparc/isa/decoder.isa +++ b/src/arch/sparc/isa/decoder.isa @@ -163,7 +163,10 @@ decode OP default Unknown::unknown() 0x6: Trap::fbfcc({{fault = new FpDisabled;}}); } 0x1: BranchN::call(30, {{ - R15 = xc->readPC(); + if (Pstate<3:>) + R15 = (xc->readPC())<31:0>; + else + R15 = xc->readPC(); NNPC = R15 + disp; }}); 0x2: decode OP3 { @@ -578,6 +581,9 @@ decode OP default Unknown::unknown() Cansave = Cansave - 1; else Otherwin = Otherwin - 1; + + if(Cleanwin < NWindows - 1) + Cleanwin = Cleanwin + 1; }}); } 0x32: decode RD { @@ -875,7 +881,10 @@ decode OP default Unknown::unknown() fault = new MemAddressNotAligned; else { - Rd = xc->readPC(); + if (Pstate<3:>) + (Rd = xc->readPC())<31:0>; + else + Rd = xc->readPC(); NNPC = target; } }}); -- cgit v1.2.3