NMSIS-Core  Version 1.4.0
NMSIS-Core support for Nuclei processor-based devices
Register Define and Type Definitions Of PLIC

Type definitions and defines for plic registers. More...

Macros

#define PLIC_PRIORITY_OFFSET   _AC(0x0000,UL)
 PLIC Priority register offset. More...
 
#define PLIC_PRIORITY_SHIFT_PER_SOURCE   2
 PLIC Priority register offset shift per source. More...
 
#define PLIC_PENDING_OFFSET   _AC(0x1000,UL)
 PLIC Pending register offset. More...
 
#define PLIC_PENDING_SHIFT_PER_SOURCE   0
 PLIC Pending register offset shift per source. More...
 
#define PLIC_ENABLE_OFFSET   _AC(0x2000,UL)
 PLIC Enable register offset. More...
 
#define PLIC_ENABLE_SHIFT_PER_CONTEXT   7
 PLIC Enable register offset shift per context. More...
 
#define PLIC_THRESHOLD_OFFSET   _AC(0x200000,UL)
 PLIC Threshold register offset. More...
 
#define PLIC_CLAIM_OFFSET   _AC(0x200004,UL)
 PLIC Claim register offset. More...
 
#define PLIC_THRESHOLD_SHIFT_PER_CONTEXT   12
 PLIC Threshold register offset shift per context. More...
 
#define PLIC_CLAIM_SHIFT_PER_CONTEXT   12
 PLIC Claim register offset shift per context. More...
 
#define PLIC_BASE   __PLIC_BASEADDR
 PLIC Base Address. More...
 
#define PLIC_GetHartID()   (__get_hart_index())
 PLIC_GetHartID() is used to get plic hartid which might not be the same as cpu hart id, for example, cpu hartid may be 1, but plic hartid may be 0, then plic hartid offset is 1. More...
 
#define PLIC_GetHartID_S()   (__get_hart_index_s())
 
#define PLIC_GetHartMContextID()   (PLIC_GetHartID() << 1)
 
#define PLIC_GetHartSContextID()   ((PLIC_GetHartID_S() << 1) + 1)
 
#define PLIC_PRIORITY_REGADDR(source)   ((PLIC_BASE) + (PLIC_PRIORITY_OFFSET) + ((source) << PLIC_PRIORITY_SHIFT_PER_SOURCE))
 
#define PLIC_PENDING_REGADDR(source)   ((PLIC_BASE) + (PLIC_PENDING_OFFSET) + (((source) >> 5) * 4))
 
#define PLIC_ENABLE_REGADDR(ctxid, source)   ((PLIC_BASE) + (PLIC_ENABLE_OFFSET) + ((ctxid) << PLIC_ENABLE_SHIFT_PER_CONTEXT) + ((source) >> 5) * 4)
 
#define PLIC_THRESHOLD_REGADDR(ctxid)   ((PLIC_BASE) + (PLIC_THRESHOLD_OFFSET) + ((ctxid) << PLIC_THRESHOLD_SHIFT_PER_CONTEXT))
 
#define PLIC_CLAIM_REGADDR(ctxid)   ((PLIC_BASE) + (PLIC_CLAIM_OFFSET) + ((ctxid) << PLIC_CLAIM_SHIFT_PER_CONTEXT))
 
#define PLIC_COMPLETE_REGADDR(ctxid)   (PLIC_CLAIM_REGADDR(ctxid))
 

Detailed Description

Type definitions and defines for plic registers.

Macro Definition Documentation

◆ PLIC_BASE

#define PLIC_BASE   __PLIC_BASEADDR

PLIC Base Address.

Definition at line 70 of file core_feature_plic.h.

◆ PLIC_CLAIM_OFFSET

#define PLIC_CLAIM_OFFSET   _AC(0x200004,UL)

PLIC Claim register offset.

Definition at line 60 of file core_feature_plic.h.

◆ PLIC_CLAIM_REGADDR

#define PLIC_CLAIM_REGADDR (   ctxid)    ((PLIC_BASE) + (PLIC_CLAIM_OFFSET) + ((ctxid) << PLIC_CLAIM_SHIFT_PER_CONTEXT))

Definition at line 95 of file core_feature_plic.h.

◆ PLIC_CLAIM_SHIFT_PER_CONTEXT

#define PLIC_CLAIM_SHIFT_PER_CONTEXT   12

PLIC Claim register offset shift per context.

Definition at line 62 of file core_feature_plic.h.

◆ PLIC_COMPLETE_REGADDR

#define PLIC_COMPLETE_REGADDR (   ctxid)    (PLIC_CLAIM_REGADDR(ctxid))

Definition at line 96 of file core_feature_plic.h.

◆ PLIC_ENABLE_OFFSET

#define PLIC_ENABLE_OFFSET   _AC(0x2000,UL)

PLIC Enable register offset.

Definition at line 56 of file core_feature_plic.h.

◆ PLIC_ENABLE_REGADDR

#define PLIC_ENABLE_REGADDR (   ctxid,
  source 
)    ((PLIC_BASE) + (PLIC_ENABLE_OFFSET) + ((ctxid) << PLIC_ENABLE_SHIFT_PER_CONTEXT) + ((source) >> 5) * 4)

Definition at line 93 of file core_feature_plic.h.

◆ PLIC_ENABLE_SHIFT_PER_CONTEXT

#define PLIC_ENABLE_SHIFT_PER_CONTEXT   7

PLIC Enable register offset shift per context.

Definition at line 57 of file core_feature_plic.h.

◆ PLIC_GetHartID

#define PLIC_GetHartID ( )    (__get_hart_index())

PLIC_GetHartID() is used to get plic hartid which might not be the same as cpu hart id, for example, cpu hartid may be 1, but plic hartid may be 0, then plic hartid offset is 1.

If defined __PLIC_HARTID, it will use __PLIC_HARTID as plic hartid, otherwise, it will use __get_hart_index(). The cpu hartid is get by using __get_hart_id function

Definition at line 80 of file core_feature_plic.h.

◆ PLIC_GetHartID_S

#define PLIC_GetHartID_S ( )    (__get_hart_index_s())

Definition at line 81 of file core_feature_plic.h.

◆ PLIC_GetHartMContextID

#define PLIC_GetHartMContextID ( )    (PLIC_GetHartID() << 1)

Definition at line 87 of file core_feature_plic.h.

◆ PLIC_GetHartSContextID

#define PLIC_GetHartSContextID ( )    ((PLIC_GetHartID_S() << 1) + 1)

Definition at line 89 of file core_feature_plic.h.

◆ PLIC_PENDING_OFFSET

#define PLIC_PENDING_OFFSET   _AC(0x1000,UL)

PLIC Pending register offset.

Definition at line 52 of file core_feature_plic.h.

◆ PLIC_PENDING_REGADDR

#define PLIC_PENDING_REGADDR (   source)    ((PLIC_BASE) + (PLIC_PENDING_OFFSET) + (((source) >> 5) * 4))

Definition at line 92 of file core_feature_plic.h.

◆ PLIC_PENDING_SHIFT_PER_SOURCE

#define PLIC_PENDING_SHIFT_PER_SOURCE   0

PLIC Pending register offset shift per source.

Definition at line 53 of file core_feature_plic.h.

◆ PLIC_PRIORITY_OFFSET

#define PLIC_PRIORITY_OFFSET   _AC(0x0000,UL)

PLIC Priority register offset.

Definition at line 49 of file core_feature_plic.h.

◆ PLIC_PRIORITY_REGADDR

#define PLIC_PRIORITY_REGADDR (   source)    ((PLIC_BASE) + (PLIC_PRIORITY_OFFSET) + ((source) << PLIC_PRIORITY_SHIFT_PER_SOURCE))

Definition at line 91 of file core_feature_plic.h.

◆ PLIC_PRIORITY_SHIFT_PER_SOURCE

#define PLIC_PRIORITY_SHIFT_PER_SOURCE   2

PLIC Priority register offset shift per source.

Definition at line 50 of file core_feature_plic.h.

◆ PLIC_THRESHOLD_OFFSET

#define PLIC_THRESHOLD_OFFSET   _AC(0x200000,UL)

PLIC Threshold register offset.

Definition at line 59 of file core_feature_plic.h.

◆ PLIC_THRESHOLD_REGADDR

#define PLIC_THRESHOLD_REGADDR (   ctxid)    ((PLIC_BASE) + (PLIC_THRESHOLD_OFFSET) + ((ctxid) << PLIC_THRESHOLD_SHIFT_PER_CONTEXT))

Definition at line 94 of file core_feature_plic.h.

◆ PLIC_THRESHOLD_SHIFT_PER_CONTEXT

#define PLIC_THRESHOLD_SHIFT_PER_CONTEXT   12

PLIC Threshold register offset shift per context.

Definition at line 61 of file core_feature_plic.h.