execute.cc (10851:a50657a4f0c1) execute.cc (11150:a8a64cca231b)
1/*
2 * Copyright (c) 2013-2014 ARM Limited
3 * All rights reserved
4 *
5 * The license below extends only to copyright in the software and shall
6 * not be construed as granting a license to any other intellectual
7 * property including but not limited to intellectual property relating
8 * to a hardware implementation of the functionality of the software

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

398}
399
400bool
401Execute::takeInterrupt(ThreadID thread_id, BranchData &branch)
402{
403 DPRINTF(MinorInterrupt, "Considering interrupt status from PC: %s\n",
404 cpu.getContext(thread_id)->pcState());
405
1/*
2 * Copyright (c) 2013-2014 ARM Limited
3 * All rights reserved
4 *
5 * The license below extends only to copyright in the software and shall
6 * not be construed as granting a license to any other intellectual
7 * property including but not limited to intellectual property relating
8 * to a hardware implementation of the functionality of the software

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

398}
399
400bool
401Execute::takeInterrupt(ThreadID thread_id, BranchData &branch)
402{
403 DPRINTF(MinorInterrupt, "Considering interrupt status from PC: %s\n",
404 cpu.getContext(thread_id)->pcState());
405
406 Fault interrupt = cpu.getInterruptController()->getInterrupt
406 Fault interrupt = cpu.getInterruptController(thread_id)->getInterrupt
407 (cpu.getContext(thread_id));
408
409 if (interrupt != NoFault) {
410 /* The interrupt *must* set pcState */
407 (cpu.getContext(thread_id));
408
409 if (interrupt != NoFault) {
410 /* The interrupt *must* set pcState */
411 cpu.getInterruptController()->updateIntrInfo
411 cpu.getInterruptController(thread_id)->updateIntrInfo
412 (cpu.getContext(thread_id));
413 interrupt->invoke(cpu.getContext(thread_id));
414
415 assert(!lsq.accessesInFlight());
416
417 DPRINTF(MinorInterrupt, "Invoking interrupt: %s to PC: %s\n",
418 interrupt->name(), cpu.getContext(thread_id)->pcState());
419

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

1386 lsq.step();
1387
1388 /* Has an interrupt been signalled? This may not be acted on
1389 * straighaway so this is different from took_interrupt below */
1390 bool interrupted = false;
1391 /* If there was an interrupt signalled, was it acted on now? */
1392 bool took_interrupt = false;
1393
412 (cpu.getContext(thread_id));
413 interrupt->invoke(cpu.getContext(thread_id));
414
415 assert(!lsq.accessesInFlight());
416
417 DPRINTF(MinorInterrupt, "Invoking interrupt: %s to PC: %s\n",
418 interrupt->name(), cpu.getContext(thread_id)->pcState());
419

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

1386 lsq.step();
1387
1388 /* Has an interrupt been signalled? This may not be acted on
1389 * straighaway so this is different from took_interrupt below */
1390 bool interrupted = false;
1391 /* If there was an interrupt signalled, was it acted on now? */
1392 bool took_interrupt = false;
1393
1394 if (cpu.getInterruptController()) {
1394 if (cpu.getInterruptController(0)) {
1395 /* This is here because it seems that after drainResume the
1396 * interrupt controller isn't always set */
1397 interrupted = drainState == NotDraining && isInterrupted(0);
1398 } else {
1399 DPRINTF(MinorInterrupt, "No interrupt controller\n");
1400 }
1401
1402 unsigned int num_issued = 0;

--- 337 unchanged lines hidden ---
1395 /* This is here because it seems that after drainResume the
1396 * interrupt controller isn't always set */
1397 interrupted = drainState == NotDraining && isInterrupted(0);
1398 } else {
1399 DPRINTF(MinorInterrupt, "No interrupt controller\n");
1400 }
1401
1402 unsigned int num_issued = 0;

--- 337 unchanged lines hidden ---