diff options
Diffstat (limited to 'include')
| -rw-r--r-- | include/sbi/sbi_ipi.h | 3 | ||||
| -rw-r--r-- | include/sbi/sbi_scratch.h | 14 |
2 files changed, 13 insertions, 4 deletions
diff --git a/include/sbi/sbi_ipi.h b/include/sbi/sbi_ipi.h index 33293c3b..609598e4 100644 --- a/include/sbi/sbi_ipi.h +++ b/include/sbi/sbi_ipi.h @@ -18,6 +18,7 @@ #define SBI_IPI_EVENT_SFENCE_VMA_ASID 0x8 #define SBI_IPI_EVENT_HALT 0x10 +#define SBI_TLB_FIFO_NUM_ENTRIES 4 enum sbi_tlb_info_types { SBI_TLB_FLUSH_VMA, SBI_TLB_FLUSH_VMA_ASID, @@ -37,6 +38,8 @@ struct sbi_tlb_info { unsigned long type; }; +#define SBI_TLB_INFO_SIZE sizeof(struct sbi_tlb_info) + int sbi_ipi_send_many(struct sbi_scratch *scratch, ulong *pmask, u32 event, void *data); diff --git a/include/sbi/sbi_scratch.h b/include/sbi/sbi_scratch.h index 800ffcfe..a41549cc 100644 --- a/include/sbi/sbi_scratch.h +++ b/include/sbi/sbi_scratch.h @@ -37,7 +37,9 @@ /** Offset of ipi_type in sbi_ipi_data */ #define SBI_IPI_DATA_IPI_TYPE_OFFSET (15 * __SIZEOF_POINTER__) -#define SBI_SCRATCH_TLB_INFO_OFFSET (16 * __SIZEOF_POINTER__) +#define SBI_SCRATCH_TLB_QUEUE_HEAD_OFFSET (16 * __SIZEOF_POINTER__) +#define SBI_SCRATCH_TLB_QUEUE_MEM_OFFSET (SBI_SCRATCH_TLB_QUEUE_HEAD_OFFSET + SBI_TLB_INFO_SIZE) + /** Maximum size of sbi_scratch and sbi_ipi_data */ #define SBI_SCRATCH_SIZE (64 * __SIZEOF_POINTER__) @@ -88,9 +90,13 @@ enum sbi_scratch_options { #define sbi_ipi_data_ptr(scratch) \ ((struct sbi_ipi_data *)(void*)scratch + SBI_IPI_DATA_IPI_TYPE_OFFSET) -/** Get pointer to tlb flush info from sbi_scratch */ -#define sbi_tlb_info_ptr(scratch) \ -((struct sbi_tlb_info *)(void*)scratch + SBI_SCRATCH_TLB_INFO_OFFSET) +/** Get pointer to tlb flush info fifo header from sbi_scratch */ +#define sbi_tlb_fifo_head_ptr(scratch) \ +((struct sbi_fifo *)(void*)scratch + SBI_SCRATCH_TLB_QUEUE_HEAD_OFFSET) + +/** Get pointer to tlb flush info fifo queue address from sbi_scratch */ +#define sbi_tlb_fifo_mem_ptr(scratch) \ +(void *)((void*)scratch + SBI_SCRATCH_TLB_QUEUE_MEM_OFFSET) #endif |
