interrupts.hh (10037:5cac77888310) | interrupts.hh (10474:799c8ee4ecba) |
---|---|
1/* 2 * Copyright (c) 2010, 2012-2013 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 --- 230 unchanged lines hidden (view full) --- 239 return NoFault; 240 241 bool take_irq = takeInt(tc, INT_IRQ); 242 bool take_fiq = takeInt(tc, INT_FIQ); 243 bool take_ea = takeInt(tc, INT_ABT); 244 245 246 if (interrupts[INT_IRQ] && take_irq) | 1/* 2 * Copyright (c) 2010, 2012-2013 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 --- 230 unchanged lines hidden (view full) --- 239 return NoFault; 240 241 bool take_irq = takeInt(tc, INT_IRQ); 242 bool take_fiq = takeInt(tc, INT_FIQ); 243 bool take_ea = takeInt(tc, INT_ABT); 244 245 246 if (interrupts[INT_IRQ] && take_irq) |
247 return new Interrupt; | 247 return std::make_shared<Interrupt>(); |
248 if ((interrupts[INT_VIRT_IRQ] || hcr.vi) && allowVIrq) | 248 if ((interrupts[INT_VIRT_IRQ] || hcr.vi) && allowVIrq) |
249 return new VirtualInterrupt; | 249 return std::make_shared<VirtualInterrupt>(); |
250 if (interrupts[INT_FIQ] && take_fiq) | 250 if (interrupts[INT_FIQ] && take_fiq) |
251 return new FastInterrupt; | 251 return std::make_shared<FastInterrupt>(); |
252 if ((interrupts[INT_VIRT_FIQ] || hcr.vf) && allowVFiq) | 252 if ((interrupts[INT_VIRT_FIQ] || hcr.vf) && allowVFiq) |
253 return new VirtualFastInterrupt; | 253 return std::make_shared<VirtualFastInterrupt>(); |
254 if (interrupts[INT_ABT] && take_ea) | 254 if (interrupts[INT_ABT] && take_ea) |
255 return new SystemError; | 255 return std::make_shared<SystemError>(); |
256 if (hcr.va && allowVAbort) | 256 if (hcr.va && allowVAbort) |
257 return new VirtualDataAbort(0, TlbEntry::DomainType::NoAccess, false, 258 ArmFault::AsynchronousExternalAbort); | 257 return std::make_shared<VirtualDataAbort>( 258 0, TlbEntry::DomainType::NoAccess, false, 259 ArmFault::AsynchronousExternalAbort); |
259 if (interrupts[INT_RST]) | 260 if (interrupts[INT_RST]) |
260 return new Reset; | 261 return std::make_shared<Reset>(); |
261 if (interrupts[INT_SEV]) | 262 if (interrupts[INT_SEV]) |
262 return new ArmSev; | 263 return std::make_shared<ArmSev>(); |
263 264 panic("intStatus and interrupts not in sync\n"); 265 } 266 267 void 268 updateIntrInfo(ThreadContext *tc) 269 { 270 ; // nothing to do --- 19 unchanged lines hidden --- | 264 265 panic("intStatus and interrupts not in sync\n"); 266 } 267 268 void 269 updateIntrInfo(ThreadContext *tc) 270 { 271 ; // nothing to do --- 19 unchanged lines hidden --- |