mirror of
				https://github.com/riscv-software-src/opensbi
				synced 2025-11-04 05:50:22 +00:00 
			
		
		
		
	This patch adds new IPI extension which replaces ipi related v0.1 extensions. This also adds a new API for ipi sending as trap handling is not necessary in v0.2 SBI IPI related extensions. It also modifies the IPI sending code which now accepts hart mask as a value instead of S-mode virtual address. Thus, the caller should set it to exact hart mask value everytime. Signed-off-by: Atish Patra <atish.patra@wdc.com> Reviewed-by: Anup Patel <anup.patel@wdc.com>
		
			
				
	
	
		
			40 lines
		
	
	
		
			778 B
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			40 lines
		
	
	
		
			778 B
		
	
	
	
		
			C
		
	
	
	
	
	
/*
 | 
						|
 * SPDX-License-Identifier: BSD-2-Clause
 | 
						|
 *
 | 
						|
 * Copyright (c) 2019 Western Digital Corporation or its affiliates.
 | 
						|
 *
 | 
						|
 * Authors:
 | 
						|
 *   Anup Patel <anup.patel@wdc.com>
 | 
						|
 */
 | 
						|
 | 
						|
#ifndef __SBI_IPI_H__
 | 
						|
#define __SBI_IPI_H__
 | 
						|
 | 
						|
#include <sbi/sbi_types.h>
 | 
						|
 | 
						|
/* clang-format off */
 | 
						|
 | 
						|
#define SBI_IPI_EVENT_SOFT			0x1
 | 
						|
#define SBI_IPI_EVENT_FENCE			0x2
 | 
						|
#define SBI_IPI_EVENT_HALT			0x10
 | 
						|
 | 
						|
/* clang-format on */
 | 
						|
 | 
						|
struct sbi_scratch;
 | 
						|
struct sbi_trap_info;
 | 
						|
 | 
						|
struct sbi_ipi_data {
 | 
						|
	unsigned long ipi_type;
 | 
						|
};
 | 
						|
 | 
						|
int sbi_ipi_send_many(struct sbi_scratch *scratch, ulong hmask,
 | 
						|
		      ulong hbase, u32 event, void *data);
 | 
						|
 | 
						|
void sbi_ipi_clear_smode(struct sbi_scratch *scratch);
 | 
						|
 | 
						|
void sbi_ipi_process(struct sbi_scratch *scratch);
 | 
						|
 | 
						|
int sbi_ipi_init(struct sbi_scratch *scratch, bool cold_boot);
 | 
						|
 | 
						|
#endif
 |