faults.cc (7720:65d338a8dba4) | faults.cc (8063:eea37fdcfc11) |
---|---|
1/* 2 * Copyright (c) 2010 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 --- 170 unchanged lines hidden (view full) --- 179} 180 181void 182SupervisorCall::invoke(ThreadContext *tc, StaticInstPtr inst) 183{ 184 // As of now, there isn't a 32 bit thumb version of this instruction. 185 assert(!machInst.bigThumb); 186 uint32_t callNum; | 1/* 2 * Copyright (c) 2010 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 --- 170 unchanged lines hidden (view full) --- 179} 180 181void 182SupervisorCall::invoke(ThreadContext *tc, StaticInstPtr inst) 183{ 184 // As of now, there isn't a 32 bit thumb version of this instruction. 185 assert(!machInst.bigThumb); 186 uint32_t callNum; |
187 if (machInst.thumb) { 188 callNum = bits(machInst, 7, 0); 189 } else { 190 callNum = bits(machInst, 23, 0); 191 } 192 if (callNum == 0) { 193 callNum = tc->readIntReg(INTREG_R7); 194 } | 187 callNum = tc->readIntReg(INTREG_R7); |
195 tc->syscall(callNum); 196 197 // Advance the PC since that won't happen automatically. 198 PCState pc = tc->pcState(); 199 assert(inst); 200 inst->advancePC(pc); 201 tc->pcState(pc); 202} --- 39 unchanged lines hidden --- | 188 tc->syscall(callNum); 189 190 // Advance the PC since that won't happen automatically. 191 PCState pc = tc->pcState(); 192 assert(inst); 193 inst->advancePC(pc); 194 tc->pcState(pc); 195} --- 39 unchanged lines hidden --- |