1/* 2 * QEMU RISC-V lowRISC Ibex PLIC 3 * 4 * Copyright (c) 2020 Western Digital 5 * 6 * This program is free software; you can redistribute it and/or modify it 7 * under the terms and conditions of the GNU General Public License, 8 * version 2 or later, as published by the Free Software Foundation. 9 * 10 * This program is distributed in the hope it will be useful, but WITHOUT 11 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or 12 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for 13 * more details. 14 * 15 * You should have received a copy of the GNU General Public License along with 16 * this program. If not, see <http://www.gnu.org/licenses/>. 17 */ 18 19#ifndef HW_IBEX_PLIC_H 20#define HW_IBEX_PLIC_H 21 22#include "hw/sysbus.h" 23#include "qom/object.h" 24 25#define TYPE_IBEX_PLIC "ibex-plic" 26OBJECT_DECLARE_SIMPLE_TYPE(IbexPlicState, IBEX_PLIC) 27 28struct IbexPlicState { 29 /*< private >*/ 30 SysBusDevice parent_obj; 31 32 /*< public >*/ 33 MemoryRegion mmio; 34 35 uint32_t *pending; 36 uint32_t *hidden_pending; 37 uint32_t *claimed; 38 uint32_t *source; 39 uint32_t *priority; 40 uint32_t *enable; 41 uint32_t threshold; 42 uint32_t claim; 43 44 /* config */ 45 uint32_t num_cpus; 46 uint32_t num_sources; 47 48 uint32_t pending_base; 49 uint32_t pending_num; 50 51 uint32_t source_base; 52 uint32_t source_num; 53 54 uint32_t priority_base; 55 uint32_t priority_num; 56 57 uint32_t enable_base; 58 uint32_t enable_num; 59 60 uint32_t threshold_base; 61 62 uint32_t claim_base; 63 64 qemu_irq *external_irqs; 65}; 66 67#endif /* HW_IBEX_PLIC_H */ 68