/* SPDX-License-Identifier: GPL-2.0-only */
/*
* Copyright (C) 2021 Western Digital Corporation or its affiliates.
* Copyright (C) 2022 Ventana Micro Systems Inc.
*/
#ifndef __LINUX_IRQCHIP_RISCV_APLIC_H
#define __LINUX_IRQCHIP_RISCV_APLIC_H
#include <linux/bitops.h>
#define APLIC_MAX_IDC BIT(14 )
#define APLIC_MAX_SOURCE 1024
#define APLIC_DOMAINCFG 0 x0000
#define APLIC_DOMAINCFG_RDONLY 0 x80000000
#define APLIC_DOMAINCFG_IE BIT(8 )
#define APLIC_DOMAINCFG_DM BIT(2 )
#define APLIC_DOMAINCFG_BE BIT(0 )
#define APLIC_SOURCECFG_BASE 0 x0004
#define APLIC_SOURCECFG_D BIT(10 )
#define APLIC_SOURCECFG_CHILDIDX_MASK 0 x000003ff
#define APLIC_SOURCECFG_SM_MASK 0 x00000007
#define APLIC_SOURCECFG_SM_INACTIVE 0 x0
#define APLIC_SOURCECFG_SM_DETACH 0 x1
#define APLIC_SOURCECFG_SM_EDGE_RISE 0 x4
#define APLIC_SOURCECFG_SM_EDGE_FALL 0 x5
#define APLIC_SOURCECFG_SM_LEVEL_HIGH 0 x6
#define APLIC_SOURCECFG_SM_LEVEL_LOW 0 x7
#define APLIC_MMSICFGADDR 0 x1bc0
#define APLIC_MMSICFGADDRH 0 x1bc4
#define APLIC_SMSICFGADDR 0 x1bc8
#define APLIC_SMSICFGADDRH 0 x1bcc
#ifdef CONFIG_RISCV_M_MODE
#define APLIC_xMSICFGADDR APLIC_MMSICFGADDR
#define APLIC_xMSICFGADDRH APLIC_MMSICFGADDRH
#else
#define APLIC_xMSICFGADDR APLIC_SMSICFGADDR
#define APLIC_xMSICFGADDRH APLIC_SMSICFGADDRH
#endif
#define APLIC_xMSICFGADDRH_L BIT(31 )
#define APLIC_xMSICFGADDRH_HHXS_MASK 0 x1f
#define APLIC_xMSICFGADDRH_HHXS_SHIFT 24
#define APLIC_xMSICFGADDRH_HHXS (APLIC_xMSICFGADDRH_HHXS_MASK << \
APLIC_xMSICFGADDRH_HHXS_SHIFT)
#define APLIC_xMSICFGADDRH_LHXS_MASK 0 x7
#define APLIC_xMSICFGADDRH_LHXS_SHIFT 20
#define APLIC_xMSICFGADDRH_LHXS (APLIC_xMSICFGADDRH_LHXS_MASK << \
APLIC_xMSICFGADDRH_LHXS_SHIFT)
#define APLIC_xMSICFGADDRH_HHXW_MASK 0 x7
#define APLIC_xMSICFGADDRH_HHXW_SHIFT 16
#define APLIC_xMSICFGADDRH_HHXW (APLIC_xMSICFGADDRH_HHXW_MASK << \
APLIC_xMSICFGADDRH_HHXW_SHIFT)
#define APLIC_xMSICFGADDRH_LHXW_MASK 0 xf
#define APLIC_xMSICFGADDRH_LHXW_SHIFT 12
#define APLIC_xMSICFGADDRH_LHXW (APLIC_xMSICFGADDRH_LHXW_MASK << \
APLIC_xMSICFGADDRH_LHXW_SHIFT)
#define APLIC_xMSICFGADDRH_BAPPN_MASK 0 xfff
#define APLIC_xMSICFGADDRH_BAPPN_SHIFT 0
#define APLIC_xMSICFGADDRH_BAPPN (APLIC_xMSICFGADDRH_BAPPN_MASK << \
APLIC_xMSICFGADDRH_BAPPN_SHIFT)
#define APLIC_xMSICFGADDR_PPN_SHIFT 12
#define APLIC_xMSICFGADDR_PPN_HART(__lhxs) \
(BIT(__lhxs) - 1 )
#define APLIC_xMSICFGADDR_PPN_LHX_MASK(__lhxw) \
(BIT(__lhxw) - 1 )
#define APLIC_xMSICFGADDR_PPN_LHX_SHIFT(__lhxs) \
((__lhxs))
#define APLIC_xMSICFGADDR_PPN_LHX(__lhxw, __lhxs) \
(APLIC_xMSICFGADDR_PPN_LHX_MASK(__lhxw) << \
APLIC_xMSICFGADDR_PPN_LHX_SHIFT(__lhxs))
#define APLIC_xMSICFGADDR_PPN_HHX_MASK(__hhxw) \
(BIT(__hhxw) - 1 )
#define APLIC_xMSICFGADDR_PPN_HHX_SHIFT(__hhxs) \
((__hhxs) + APLIC_xMSICFGADDR_PPN_SHIFT)
#define APLIC_xMSICFGADDR_PPN_HHX(__hhxw, __hhxs) \
(APLIC_xMSICFGADDR_PPN_HHX_MASK(__hhxw) << \
APLIC_xMSICFGADDR_PPN_HHX_SHIFT(__hhxs))
#define APLIC_IRQBITS_PER_REG 32
#define APLIC_SETIP_BASE 0 x1c00
#define APLIC_SETIPNUM 0 x1cdc
#define APLIC_CLRIP_BASE 0 x1d00
#define APLIC_CLRIPNUM 0 x1ddc
#define APLIC_SETIE_BASE 0 x1e00
#define APLIC_SETIENUM 0 x1edc
#define APLIC_CLRIE_BASE 0 x1f00
#define APLIC_CLRIENUM 0 x1fdc
#define APLIC_SETIPNUM_LE 0 x2000
#define APLIC_SETIPNUM_BE 0 x2004
#define APLIC_GENMSI 0 x3000
#define APLIC_TARGET_BASE 0 x3004
#define APLIC_TARGET_HART_IDX_SHIFT 18
#define APLIC_TARGET_HART_IDX_MASK 0 x3fff
#define APLIC_TARGET_HART_IDX (APLIC_TARGET_HART_IDX_MASK << \
APLIC_TARGET_HART_IDX_SHIFT)
#define APLIC_TARGET_GUEST_IDX_SHIFT 12
#define APLIC_TARGET_GUEST_IDX_MASK 0 x3f
#define APLIC_TARGET_GUEST_IDX (APLIC_TARGET_GUEST_IDX_MASK << \
APLIC_TARGET_GUEST_IDX_SHIFT)
#define APLIC_TARGET_IPRIO_SHIFT 0
#define APLIC_TARGET_IPRIO_MASK 0 xff
#define APLIC_TARGET_IPRIO (APLIC_TARGET_IPRIO_MASK << \
APLIC_TARGET_IPRIO_SHIFT)
#define APLIC_TARGET_EIID_SHIFT 0
#define APLIC_TARGET_EIID_MASK 0 x7ff
#define APLIC_TARGET_EIID (APLIC_TARGET_EIID_MASK << \
APLIC_TARGET_EIID_SHIFT)
#define APLIC_IDC_BASE 0 x4000
#define APLIC_IDC_SIZE 32
#define APLIC_IDC_IDELIVERY 0 x00
#define APLIC_IDC_IFORCE 0 x04
#define APLIC_IDC_ITHRESHOLD 0 x08
#define APLIC_IDC_TOPI 0 x18
#define APLIC_IDC_TOPI_ID_SHIFT 16
#define APLIC_IDC_TOPI_ID_MASK 0 x3ff
#define APLIC_IDC_TOPI_ID (APLIC_IDC_TOPI_ID_MASK << \
APLIC_IDC_TOPI_ID_SHIFT)
#define APLIC_IDC_TOPI_PRIO_SHIFT 0
#define APLIC_IDC_TOPI_PRIO_MASK 0 xff
#define APLIC_IDC_TOPI_PRIO (APLIC_IDC_TOPI_PRIO_MASK << \
APLIC_IDC_TOPI_PRIO_SHIFT)
#define APLIC_IDC_CLAIMI 0 x1c
#endif
Messung V0.5 in Prozent C=94 H=93 G=93
¤ Dauer der Verarbeitung: 0.8 Sekunden
(vorverarbeitet am 2026-06-07)
¤
*© Formatika GbR, Deutschland