target-sparc: make cpu-qom.h not target specific
Make SPARCCPU an opaque type within cpu-qom.h, and move all definitions of private methods, as well as all type definitions that require knowledge of the layout to cpu.h. This helps making files independent of NEED_CPU_H if they only need to pass around CPU pointers. Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
This commit is contained in:
		
							parent
							
								
									e6005f66f9
								
							
						
					
					
						commit
						d61d1b2061
					
				| 
						 | 
					@ -51,41 +51,6 @@ typedef struct SPARCCPUClass {
 | 
				
			||||||
    void (*parent_reset)(CPUState *cpu);
 | 
					    void (*parent_reset)(CPUState *cpu);
 | 
				
			||||||
} SPARCCPUClass;
 | 
					} SPARCCPUClass;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					typedef struct SPARCCPU SPARCCPU;
 | 
				
			||||||
 * SPARCCPU:
 | 
					 | 
				
			||||||
 * @env: #CPUSPARCState
 | 
					 | 
				
			||||||
 *
 | 
					 | 
				
			||||||
 * A SPARC CPU.
 | 
					 | 
				
			||||||
 */
 | 
					 | 
				
			||||||
typedef struct SPARCCPU {
 | 
					 | 
				
			||||||
    /*< private >*/
 | 
					 | 
				
			||||||
    CPUState parent_obj;
 | 
					 | 
				
			||||||
    /*< public >*/
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    CPUSPARCState env;
 | 
					 | 
				
			||||||
} SPARCCPU;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
static inline SPARCCPU *sparc_env_get_cpu(CPUSPARCState *env)
 | 
					 | 
				
			||||||
{
 | 
					 | 
				
			||||||
    return container_of(env, SPARCCPU, env);
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
#define ENV_GET_CPU(e) CPU(sparc_env_get_cpu(e))
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
#define ENV_OFFSET offsetof(SPARCCPU, env)
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
#ifndef CONFIG_USER_ONLY
 | 
					 | 
				
			||||||
extern const struct VMStateDescription vmstate_sparc_cpu;
 | 
					 | 
				
			||||||
#endif
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
void sparc_cpu_do_interrupt(CPUState *cpu);
 | 
					 | 
				
			||||||
void sparc_cpu_dump_state(CPUState *cpu, FILE *f,
 | 
					 | 
				
			||||||
                          fprintf_function cpu_fprintf, int flags);
 | 
					 | 
				
			||||||
hwaddr sparc_cpu_get_phys_page_debug(CPUState *cpu, vaddr addr);
 | 
					 | 
				
			||||||
int sparc_cpu_gdb_read_register(CPUState *cpu, uint8_t *buf, int reg);
 | 
					 | 
				
			||||||
int sparc_cpu_gdb_write_register(CPUState *cpu, uint8_t *buf, int reg);
 | 
					 | 
				
			||||||
void QEMU_NORETURN sparc_cpu_do_unaligned_access(CPUState *cpu,
 | 
					 | 
				
			||||||
                                                 vaddr addr, int is_write,
 | 
					 | 
				
			||||||
                                                 int is_user, uintptr_t retaddr);
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -3,6 +3,7 @@
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#include "qemu-common.h"
 | 
					#include "qemu-common.h"
 | 
				
			||||||
#include "qemu/bswap.h"
 | 
					#include "qemu/bswap.h"
 | 
				
			||||||
 | 
					#include "cpu-qom.h"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#define ALIGNED_ONLY
 | 
					#define ALIGNED_ONLY
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -506,7 +507,42 @@ struct CPUSPARCState {
 | 
				
			||||||
    uint32_t cache_control;
 | 
					    uint32_t cache_control;
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#include "cpu-qom.h"
 | 
					/**
 | 
				
			||||||
 | 
					 * SPARCCPU:
 | 
				
			||||||
 | 
					 * @env: #CPUSPARCState
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * A SPARC CPU.
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					struct SPARCCPU {
 | 
				
			||||||
 | 
					    /*< private >*/
 | 
				
			||||||
 | 
					    CPUState parent_obj;
 | 
				
			||||||
 | 
					    /*< public >*/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    CPUSPARCState env;
 | 
				
			||||||
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					static inline SPARCCPU *sparc_env_get_cpu(CPUSPARCState *env)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					    return container_of(env, SPARCCPU, env);
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#define ENV_GET_CPU(e) CPU(sparc_env_get_cpu(e))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#define ENV_OFFSET offsetof(SPARCCPU, env)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#ifndef CONFIG_USER_ONLY
 | 
				
			||||||
 | 
					extern const struct VMStateDescription vmstate_sparc_cpu;
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void sparc_cpu_do_interrupt(CPUState *cpu);
 | 
				
			||||||
 | 
					void sparc_cpu_dump_state(CPUState *cpu, FILE *f,
 | 
				
			||||||
 | 
					                          fprintf_function cpu_fprintf, int flags);
 | 
				
			||||||
 | 
					hwaddr sparc_cpu_get_phys_page_debug(CPUState *cpu, vaddr addr);
 | 
				
			||||||
 | 
					int sparc_cpu_gdb_read_register(CPUState *cpu, uint8_t *buf, int reg);
 | 
				
			||||||
 | 
					int sparc_cpu_gdb_write_register(CPUState *cpu, uint8_t *buf, int reg);
 | 
				
			||||||
 | 
					void QEMU_NORETURN sparc_cpu_do_unaligned_access(CPUState *cpu,
 | 
				
			||||||
 | 
					                                                 vaddr addr, int is_write,
 | 
				
			||||||
 | 
					                                                 int is_user, uintptr_t retaddr);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#ifndef NO_CPU_IO_DEFS
 | 
					#ifndef NO_CPU_IO_DEFS
 | 
				
			||||||
/* cpu_init.c */
 | 
					/* cpu_init.c */
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
		Reference in New Issue