xref: /netbsd-src/sys/arch/riscv/dev/plicreg.h (revision 75b842b84762e0251223b719bf77fbef2e651bf6)
1 /* $NetBSD: plicreg.h,v 1.1 2023/05/07 12:41:48 skrll Exp $ */
2 
3 /*-
4  * Copyright (c) 2022 The NetBSD Foundation, Inc.
5  * All rights reserved.
6  *
7  * Portions of this code is derived from software contributed to The NetBSD
8  * Foundation by Simon Burge.
9  *
10  * Redistribution and use in source and binary forms, with or without
11  * modification, are permitted provided that the following conditions
12  * are met:
13  * 1. Redistributions of source code must retain the above copyright
14  *    notice, this list of conditions and the following disclaimer.
15  * 2. Redistributions in binary form must reproduce the above copyright
16  *    notice, this list of conditions and the following disclaimer in the
17  *    documentation and/or other materials provided with the distribution.
18  *
19  * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
20  * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
21  * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
22  * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
23  * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
24  * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
25  * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
26  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
27  * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
28  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
29  * POSSIBILITY OF SUCH DAMAGE.
30  */
31 
32 #ifndef _RISCV_PLICREG_H
33 #define	_RISCV_PLICREG_H
34 
35 #define	PLIC_FIRST_IRQ		1	/* irq 0 is reserved */
36 #define	PLIC_MAX_IRQ		1023
37 #define	PLIC_NIRQ		(PLIC_MAX_IRQ + 1)
38 
39 #define	PLIC_PRIORITY_BASE	0x000000
40 #define	PLIC_PENDING_BASE	0x001000
41 
42 #define	PLIC_ENABLE_BASE	0x002000
43 #define	PLIC_ENABLE_SIZE	(PLIC_NIRQ / NBBY)
44 
45 #define	PLIC_CONTEXT_BASE	0x200000
46 #define	PLIC_CONTEXT_SIZE	0x1000
47 #define	PLIC_MAX_CONTEXT	15871
48 #define	PLIC_NCONTEXT		(PLIC_MAX_CONTEXT + 1)
49 #define	PLIC_THRESHOLD_OFFS	  0
50 #define	PLIC_CLAIM_COMPLETE_OFFS  4	/* read to claim, write to complete */
51 
52 #endif /* _RISCV_PLICREG_H */
53