execute.cc (13818:f0126488ef9e) | execute.cc (13954:2f400a5f2627) |
---|---|
1/* | 1/* |
2 * Copyright (c) 2013-2014 ARM Limited | 2 * Copyright (c) 2013-2014,2018 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 9 * licensed hereunder. You may use the software subject to the license 10 * terms below provided that you ensure that this notice is replicated --- 348 unchanged lines hidden (view full) --- 359 fault = response->fault; 360 361 fault->invoke(thread, inst->staticInst); 362 } 363 } else if (!packet) { 364 DPRINTF(MinorMem, "Completing failed request inst: %s\n", 365 *inst); 366 use_context_predicate = false; | 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 9 * licensed hereunder. You may use the software subject to the license 10 * terms below provided that you ensure that this notice is replicated --- 348 unchanged lines hidden (view full) --- 359 fault = response->fault; 360 361 fault->invoke(thread, inst->staticInst); 362 } 363 } else if (!packet) { 364 DPRINTF(MinorMem, "Completing failed request inst: %s\n", 365 *inst); 366 use_context_predicate = false; |
367 if (!context.readMemAccPredicate()) 368 inst->staticInst->completeAcc(nullptr, &context, inst->traceData); |
|
367 } else if (packet->isError()) { 368 DPRINTF(MinorMem, "Trying to commit error response: %s\n", 369 *inst); 370 371 fatal("Received error response packet for inst: %s\n", *inst); 372 } else if (is_store || is_load || is_prefetch || is_atomic) { 373 assert(packet); 374 --- 101 unchanged lines hidden (view full) --- 476 477 if (init_fault != NoFault) { 478 DPRINTF(MinorExecute, "Fault on memory inst: %s" 479 " initiateAcc: %s\n", *inst, init_fault->name()); 480 fault = init_fault; 481 } else { 482 /* Only set this if the instruction passed its 483 * predicate */ | 369 } else if (packet->isError()) { 370 DPRINTF(MinorMem, "Trying to commit error response: %s\n", 371 *inst); 372 373 fatal("Received error response packet for inst: %s\n", *inst); 374 } else if (is_store || is_load || is_prefetch || is_atomic) { 375 assert(packet); 376 --- 101 unchanged lines hidden (view full) --- 478 479 if (init_fault != NoFault) { 480 DPRINTF(MinorExecute, "Fault on memory inst: %s" 481 " initiateAcc: %s\n", *inst, init_fault->name()); 482 fault = init_fault; 483 } else { 484 /* Only set this if the instruction passed its 485 * predicate */ |
486 if (!context.readMemAccPredicate()) { 487 DPRINTF(MinorMem, "No memory access for inst: %s\n", *inst); 488 assert(context.readPredicate()); 489 } |
|
484 passed_predicate = context.readPredicate(); 485 486 /* Set predicate in tracing */ 487 if (inst->traceData) 488 inst->traceData->setPredicate(passed_predicate); 489 490 /* If the instruction didn't pass its predicate (and so will not 491 * progress from here) Try to branch to correct and branch --- 431 unchanged lines hidden (view full) --- 923 if (completed_mem_inst && fault != NoFault) { 924 if (early_memory_issue) { 925 DPRINTF(MinorExecute, "Fault in early executing inst: %s\n", 926 fault->name()); 927 /* Don't execute the fault, just stall the instruction 928 * until it gets to the head of inFlightInsts */ 929 inst->canEarlyIssue = false; 930 /* Not completed as we'll come here again to pick up | 490 passed_predicate = context.readPredicate(); 491 492 /* Set predicate in tracing */ 493 if (inst->traceData) 494 inst->traceData->setPredicate(passed_predicate); 495 496 /* If the instruction didn't pass its predicate (and so will not 497 * progress from here) Try to branch to correct and branch --- 431 unchanged lines hidden (view full) --- 929 if (completed_mem_inst && fault != NoFault) { 930 if (early_memory_issue) { 931 DPRINTF(MinorExecute, "Fault in early executing inst: %s\n", 932 fault->name()); 933 /* Don't execute the fault, just stall the instruction 934 * until it gets to the head of inFlightInsts */ 935 inst->canEarlyIssue = false; 936 /* Not completed as we'll come here again to pick up |
931 * the fault when we get to the end of the FU */ | 937 * the fault when we get to the end of the FU */ |
932 completed_inst = false; 933 } else { 934 DPRINTF(MinorExecute, "Fault in execute: %s\n", 935 fault->name()); 936 fault->invoke(thread, NULL); 937 938 tryToBranch(inst, fault, branch); 939 completed_inst = true; --- 942 unchanged lines hidden --- | 938 completed_inst = false; 939 } else { 940 DPRINTF(MinorExecute, "Fault in execute: %s\n", 941 fault->name()); 942 fault->invoke(thread, NULL); 943 944 tryToBranch(inst, fault, branch); 945 completed_inst = true; --- 942 unchanged lines hidden --- |