1// SPDX-License-Identifier: GPL-2.0+
2/*
3 * Copyright (C) 2019 Fraunhofer AISEC,
4 * Lukas Auer <lukas.auer@aisec.fraunhofer.de>
5 */
6
7#include <asm/encoding.h>
8#include <asm/sbi.h>
9
10int riscv_init_ipi(void)
11{
12	return 0;
13}
14
15int riscv_send_ipi(int hart)
16{
17	ulong mask;
18
19	mask = 1UL << hart;
20	sbi_send_ipi(&mask);
21
22	return 0;
23}
24
25int riscv_clear_ipi(int hart)
26{
27	csr_clear(CSR_SIP, SIP_SSIP);
28
29	return 0;
30}
31
32int riscv_get_ipi(int hart, int *pending)
33{
34	/*
35	 * The SBI does not support reading the IPI status. We always return 0
36	 * to indicate that no IPI is pending.
37	 */
38	*pending = 0;
39
40	return 0;
41}
42