| 
									
										
										
										
											2021-03-12 22:41:43 +01:00
										 |  |  | /*
 | 
					
						
							| 
									
										
										
										
											2021-11-03 11:53:11 +01:00
										 |  |  |  * SPDX-License-Identifier: GPL-2.0-or-later | 
					
						
							| 
									
										
										
										
											2021-03-12 22:41:43 +01:00
										 |  |  |  * | 
					
						
							|  |  |  |  * QEMU Motorola 680x0 IRQ Controller | 
					
						
							|  |  |  |  * | 
					
						
							|  |  |  |  * (c) 2020 Laurent Vivier <laurent@vivier.eu> | 
					
						
							|  |  |  |  * | 
					
						
							|  |  |  |  */ | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | #ifndef M68K_IRQC_H
 | 
					
						
							|  |  |  | #define M68K_IRQC_H
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | #include "hw/sysbus.h"
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | #define TYPE_M68K_IRQC "m68k-irq-controller"
 | 
					
						
							|  |  |  | #define M68K_IRQC(obj) OBJECT_CHECK(M68KIRQCState, (obj), \
 | 
					
						
							|  |  |  |                                     TYPE_M68K_IRQC) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | #define M68K_IRQC_AUTOVECTOR_BASE 25
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | enum { | 
					
						
							|  |  |  |     M68K_IRQC_LEVEL_1 = 0, | 
					
						
							|  |  |  |     M68K_IRQC_LEVEL_2, | 
					
						
							|  |  |  |     M68K_IRQC_LEVEL_3, | 
					
						
							|  |  |  |     M68K_IRQC_LEVEL_4, | 
					
						
							|  |  |  |     M68K_IRQC_LEVEL_5, | 
					
						
							|  |  |  |     M68K_IRQC_LEVEL_6, | 
					
						
							|  |  |  |     M68K_IRQC_LEVEL_7, | 
					
						
							|  |  |  | }; | 
					
						
							|  |  |  | #define M68K_IRQC_LEVEL_NUM (M68K_IRQC_LEVEL_7 - M68K_IRQC_LEVEL_1 + 1)
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | typedef struct M68KIRQCState { | 
					
						
							|  |  |  |     SysBusDevice parent_obj; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     uint8_t ipr; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     /* statistics */ | 
					
						
							|  |  |  |     uint64_t stats_irq_count[M68K_IRQC_LEVEL_NUM]; | 
					
						
							|  |  |  | } M68KIRQCState; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | #endif
 |