i8259.cc (5827:ac2c268bf4f1) i8259.cc (5830:1758d56964c9)
1/*
2 * Copyright (c) 2004-2005 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;

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

237 "anyone to tell about it.\n");
238 }
239 }
240}
241
242void
243X86ISA::I8259::signalInterrupt(int line)
244{
1/*
2 * Copyright (c) 2004-2005 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;

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

237 "anyone to tell about it.\n");
238 }
239 }
240}
241
242void
243X86ISA::I8259::signalInterrupt(int line)
244{
245 DPRINTF(I8259, "Interrupt raised on line %d.\n", line);
245 DPRINTF(I8259, "Interrupt requested for line %d.\n", line);
246 if (line >= NumLines)
247 fatal("Line number %d doesn't exist. The max is %d.\n",
248 line, NumLines - 1);
249 if (bits(IMR, line)) {
250 DPRINTF(I8259, "Interrupt %d was masked.\n", line);
251 } else {
252 IRR |= 1 << line;
253 requestInterrupt(line);
254 }
255}
256
257void
258X86ISA::I8259::raiseInterruptPin(int number)
259{
246 if (line >= NumLines)
247 fatal("Line number %d doesn't exist. The max is %d.\n",
248 line, NumLines - 1);
249 if (bits(IMR, line)) {
250 DPRINTF(I8259, "Interrupt %d was masked.\n", line);
251 } else {
252 IRR |= 1 << line;
253 requestInterrupt(line);
254 }
255}
256
257void
258X86ISA::I8259::raiseInterruptPin(int number)
259{
260 DPRINTF(I8259, "Interrupt signal raised for pin %d.\n", number);
260 if (number >= NumLines)
261 fatal("Line number %d doesn't exist. The max is %d.\n",
262 number, NumLines - 1);
263 if (!pinStates[number])
264 signalInterrupt(number);
265 pinStates[number] = true;
266}
267
268void
269X86ISA::I8259::lowerInterruptPin(int number)
270{
261 if (number >= NumLines)
262 fatal("Line number %d doesn't exist. The max is %d.\n",
263 number, NumLines - 1);
264 if (!pinStates[number])
265 signalInterrupt(number);
266 pinStates[number] = true;
267}
268
269void
270X86ISA::I8259::lowerInterruptPin(int number)
271{
272 DPRINTF(I8259, "Interrupt signal lowered for pin %d.\n", number);
271 if (number >= NumLines)
272 fatal("Line number %d doesn't exist. The max is %d.\n",
273 number, NumLines - 1);
274 pinStates[number] = false;
275}
276
277int
278X86ISA::I8259::getVector()

--- 28 unchanged lines hidden ---
273 if (number >= NumLines)
274 fatal("Line number %d doesn't exist. The max is %d.\n",
275 number, NumLines - 1);
276 pinStates[number] = false;
277}
278
279int
280X86ISA::I8259::getVector()

--- 28 unchanged lines hidden ---