1/* 2 * Copyright (c) 2019 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 --- 43 unchanged lines hidden (view full) --- 52 SGI_base + 0x041f); 53 54Gicv3Redistributor::Gicv3Redistributor(Gicv3 * gic, uint32_t cpu_id) 55 : gic(gic), 56 distributor(nullptr), 57 cpuInterface(nullptr), 58 cpuId(cpu_id), 59 memProxy(nullptr), |
60 peInLowPowerState(true), 61 irqGroup(Gicv3::SGI_MAX + Gicv3::PPI_MAX, 0), 62 irqEnabled(Gicv3::SGI_MAX + Gicv3::PPI_MAX, false), 63 irqPending(Gicv3::SGI_MAX + Gicv3::PPI_MAX, false), 64 irqActive(Gicv3::SGI_MAX + Gicv3::PPI_MAX, false), 65 irqPriority(Gicv3::SGI_MAX + Gicv3::PPI_MAX, 0), 66 irqConfig(Gicv3::SGI_MAX + Gicv3::PPI_MAX, Gicv3::INT_EDGE_TRIGGERED), 67 irqGrpmod(Gicv3::SGI_MAX + Gicv3::PPI_MAX, 0), 68 irqNsacr(Gicv3::SGI_MAX + Gicv3::PPI_MAX, 0), 69 DPG1S(false), 70 DPG1NS(false), 71 DPG0(false), 72 EnableLPIs(false), 73 lpiConfigurationTablePtr(0), 74 lpiIDBits(0), 75 lpiPendingTablePtr(0), |
76 addrRangeSize(gic->params()->gicv4 ? 0x40000 : 0x20000) 77{ 78} 79 80void 81Gicv3Redistributor::init() 82{ 83 distributor = gic->getDistributor(); 84 cpuInterface = gic->getCPUInterface(cpuId); 85 86 memProxy = &gic->getSystem()->physProxy; 87} 88 |
89uint64_t 90Gicv3Redistributor::read(Addr addr, size_t size, bool is_secure_access) 91{ 92 if (GICR_IPRIORITYR.contains(addr)) { // Interrupt Priority Registers 93 uint64_t value = 0; 94 int first_intid = addr - GICR_IPRIORITYR.start(); 95 96 for (int i = 0, int_id = first_intid; i < size; i++, int_id++) { --- 964 unchanged lines hidden --- |