Skip to content

Commit

Permalink
target-sparc: make cpu-qom.h not target specific
Browse files Browse the repository at this point in the history
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>
  • Loading branch information
bonzini committed May 19, 2016
1 parent e6005f6 commit d61d1b2
Show file tree
Hide file tree
Showing 2 changed files with 38 additions and 37 deletions.
37 changes: 1 addition & 36 deletions target-sparc/cpu-qom.h
Expand Up @@ -51,41 +51,6 @@ typedef struct SPARCCPUClass {
void (*parent_reset)(CPUState *cpu);
} SPARCCPUClass;

/**
* 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);
typedef struct SPARCCPU SPARCCPU;

#endif
38 changes: 37 additions & 1 deletion target-sparc/cpu.h
Expand Up @@ -3,6 +3,7 @@

#include "qemu-common.h"
#include "qemu/bswap.h"
#include "cpu-qom.h"

#define ALIGNED_ONLY

Expand Down Expand Up @@ -506,7 +507,42 @@ struct CPUSPARCState {
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
/* cpu_init.c */
Expand Down

0 comments on commit d61d1b2

Please sign in to comment.