Deleted Added
sdiff udiff text old ( 2650:a012c079984a ) new ( 2651:76db2c628241 )
full compact
1/*
2 * Copyright (c) 2006 The Regents of The University of Michigan
3 * All rights reserved.
4 *
5 * Redistribution and use in source and binary forms, with or without
6 * modification, are permitted provided that the following conditions are
7 * met: redistributions of source code must retain the above copyright
8 * notice, this list of conditions and the following disclaimer;

--- 42 unchanged lines hidden (view full) ---

51 case MISCREG_SOFTINT_CLR:
52 return setRegWithEffect(miscReg, ~val & softint, xc);
53 case MISCREG_SOFTINT_SET:
54 return setRegWithEffect(miscReg, val | softint, xc);
55
56 case MISCREG_TICK_CMPR:
57 if (isNonPriv())
58 return new PrivilegedOpcode;
59 setReg(miscReg, val);
60 if (tick_cmprFields.int_dis && tickCompare.scheduled())
61 tickCompare.deschedule();
62 time = tick_cmprFields.tick_cmpr - tickFields.counter;
63 if (!tick_cmprFields.int_dis && time > 0)
64 tickCompare.schedule(time * xc->getCpuPtr()->cycles(1));
65 return NoFault;
66

--- 6 unchanged lines hidden (view full) ---

73 assert(sys != NULL);
74 sys->sysTick = curTick/Clock::Int::ns - val & ~Bit64;
75 stickFields.npt = val & Bit64 ? 1 : 0;
76 return NoFault;
77
78 case MISCREG_STICK_CMPR:
79 if (isNonPriv())
80 return new PrivilegedOpcode;
81 sys = dynamic_cast<SparcSystem*>(xc->getSystemPtr());
82 assert(sys != NULL);
83 setReg(miscReg, val);
84 if (stick_cmprFields.int_dis && sTickCompare.scheduled())
85 sTickCompare.deschedule();
86 time = stick_cmprFields.tick_cmpr - sys->sysTick;
87 if (!stick_cmprFields.int_dis && time > 0)
88 sTickCompare.schedule(time * Clock::Int::ns);

--- 26 unchanged lines hidden (view full) ---

115 return NoFault;
116
117 case MISCREG_STRAND_STS_REG:
118 setReg(miscReg, strandStatusReg);
119 return NoFault;
120 case MISCREG_HSTICK_CMPR:
121 if (isNonPriv())
122 return new PrivilegedOpcode;
123 sys = dynamic_cast<SparcSystem*>(xc->getSystemPtr());
124 assert(sys != NULL);
125 setReg(miscReg, val);
126 if (hstick_cmprFields.int_dis && hSTickCompare.scheduled())
127 hSTickCompare.deschedule();
128 int64_t time = hstick_cmprFields.tick_cmpr - sys->sysTick;
129 if (!hstick_cmprFields.int_dis && time > 0)
130 hSTickCompare.schedule(time * Clock::Int::ns);

--- 59 unchanged lines hidden (view full) ---

190 return hstick_cmpr;
191
192 default:
193 fault = new IllegalInstruction;
194 return 0;
195 }
196}
197
198
199}; // namespace SparcISA