faults.cc (12732:c8b4f25eea9b) | faults.cc (12763:37c243ed1112) |
---|---|
1/* 2 * Copyright (c) 2010, 2012-2014, 2016-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 --- 587 unchanged lines hidden (view full) --- 596 name(), cpsr, curPc, tc->readIntReg(INTREG_LR), newPc); 597 PCState pc(newPc); 598 pc.thumb(cpsr.t); 599 pc.nextThumb(pc.thumb()); 600 pc.jazelle(cpsr.j); 601 pc.nextJazelle(pc.jazelle()); 602 pc.aarch64(!cpsr.width); 603 pc.nextAArch64(!cpsr.width); | 1/* 2 * Copyright (c) 2010, 2012-2014, 2016-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 --- 587 unchanged lines hidden (view full) --- 596 name(), cpsr, curPc, tc->readIntReg(INTREG_LR), newPc); 597 PCState pc(newPc); 598 pc.thumb(cpsr.t); 599 pc.nextThumb(pc.thumb()); 600 pc.jazelle(cpsr.j); 601 pc.nextJazelle(pc.jazelle()); 602 pc.aarch64(!cpsr.width); 603 pc.nextAArch64(!cpsr.width); |
604 pc.illegalExec(false); |
|
604 tc->pcState(pc); 605} 606 607void 608ArmFault::invoke64(ThreadContext *tc, const StaticInstPtr &inst) 609{ 610 // Determine actual misc. register indices for ELR_ELx and SPSR_ELx 611 MiscRegIndex elr_idx, spsr_idx; --- 67 unchanged lines hidden (view full) --- 679 680 // Set PC to start of exception handler 681 Addr new_pc = purifyTaggedAddr(vec_address, tc, toEL); 682 DPRINTF(Faults, "Invoking Fault (AArch64 target EL):%s cpsr:%#x PC:%#x " 683 "elr:%#x newVec: %#x\n", name(), cpsr, curr_pc, ret_addr, new_pc); 684 PCState pc(new_pc); 685 pc.aarch64(!cpsr.width); 686 pc.nextAArch64(!cpsr.width); | 605 tc->pcState(pc); 606} 607 608void 609ArmFault::invoke64(ThreadContext *tc, const StaticInstPtr &inst) 610{ 611 // Determine actual misc. register indices for ELR_ELx and SPSR_ELx 612 MiscRegIndex elr_idx, spsr_idx; --- 67 unchanged lines hidden (view full) --- 680 681 // Set PC to start of exception handler 682 Addr new_pc = purifyTaggedAddr(vec_address, tc, toEL); 683 DPRINTF(Faults, "Invoking Fault (AArch64 target EL):%s cpsr:%#x PC:%#x " 684 "elr:%#x newVec: %#x\n", name(), cpsr, curr_pc, ret_addr, new_pc); 685 PCState pc(new_pc); 686 pc.aarch64(!cpsr.width); 687 pc.nextAArch64(!cpsr.width); |
688 pc.illegalExec(false); |
|
687 tc->pcState(pc); 688 689 // If we have a valid instruction then use it to annotate this fault with 690 // extra information. This is used to generate the correct fault syndrome 691 // information 692 if (inst) 693 static_cast<ArmStaticInst *>(inst.get())->annotateFault(this); 694 // Save exception syndrome --- 901 unchanged lines hidden --- | 689 tc->pcState(pc); 690 691 // If we have a valid instruction then use it to annotate this fault with 692 // extra information. This is used to generate the correct fault syndrome 693 // information 694 if (inst) 695 static_cast<ArmStaticInst *>(inst.get())->annotateFault(this); 696 // Save exception syndrome --- 901 unchanged lines hidden --- |