qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Qemu-devel] [RFC qom-cpu 00/41] QOM CPUState, part 13: Emptying CPU_COM


From: Andreas Färber
Subject: [Qemu-devel] [RFC qom-cpu 00/41] QOM CPUState, part 13: Emptying CPU_COMMON
Date: Wed, 4 Sep 2013 11:04:40 +0200

Hello,

This series aggressively decimizes CPU_COMMON fields and then begins with some
follow-up cleanups in core CPU code. It is not complete in terms of cleanups,
surrounding Coding Style fixes or explanatory commit messages - sending it out
early as a gentle reminder not to use unnecessary CPUFooState but FooCPU in
target APIs please, since there is progress in getting rid of CPUArchState.
Not yet extensively tested.

After this series, only two CPU_COMMON fields remain: tlb_table and iotlb.
Problem with those is that they not only use target_ulong but depend on
NB_MMU_MODES (CPU-specific) and CPU_TLB_SIZE (host- and CPU-specific).
iotlb might be allocated in the CPU realizefn if we copy NB_MMU_MODES to a
CPUClass field. tlb_table by comparison is used as offset in host-specific
TCG-generated machine code, we would need to load a pointer in arch-specific 
ways
(and test them) if we were to move it out from CPU[Arch]State as once discussed.

On part 11, rth said for alpha that using CPUAlphaState in DisasContext was bad
and that the relevant fields should be copied into DisasContext instead; a few
targets still have an env field though and use it for register access and
cpu_abort(), so I have just changed the type for now and call upon maintainers
to review whether they want to do different changes.

Available for testing at:
git://github.com/afaerber/qemu-cpu.git qom-cpu-13.v1
https://github.com/afaerber/qemu-cpu/commits/qom-cpu-13.v1

Regards,
Andreas

>From qom-cpu-copy preview:
* Instead of moving cpu_copy() to a new linux-user/cpu.c, moved it to main.c,
  allowing to drop cpu_model_str field completely

Cc: Anthony Liguori <address@hidden>
Cc: Blue Swirl <address@hidden>
Cc: Aurélien Jarno <address@hidden>
Cc: Richard Henderson <address@hidden> (TCG)
Cc: Li Guang <address@hidden>
Cc: Michael Walle <address@hidden> (lm32)
Cc: Edgar E. Iglesias <address@hidden> (cris, microblaze)
Cc: Peter Crosthwaite <address@hidden> (microblaze)
Cc: Eduardo Habkost <address@hidden>
Cc: Igor Mammedov <address@hidden>
Cc: Riku Voipio <address@hidden> (linux-user)
Cc: Peter Maydell <address@hidden> (arm)
Cc: Alexander Graf <address@hidden> (aarch64, ppc)

Andreas Färber (41):
  cpu: Turn cpu_has_work() into a CPUClass hook
  cpu: Turn cpu_mmu_index() into a CPUClass hook
  cpu: Turn cpu_get_tb_cpu_state() into a CPUClass hook
  cpu: Turn cpu_handle_mmu_fault() into a CPUClass hook
  cpu: Move mem_io_{pc,vaddr} fields from CPU_COMMON to CPUState
  cpu: Move can_do_io field from CPU_COMMON to CPUState
  cpu: Move icount_extra field from CPU_COMMON to CPUState
  cpu: Move icount_decr field from CPU_COMMON to CPUState
  cpu: Move tb_jmp_cache field from CPU_COMMON to CPUState
  cpu: Move jmp_env field from CPU_COMMON to CPUState
  cpu: Move exception_index field from CPU_COMMON to CPUState
  cpu: Move cpu_copy() into linux-user
  cpu: Drop cpu_model_str from CPU_COMMON
  cpu: Move opaque field from CPU_COMMON to CPUState
  cpu: Move watchpoint fields from CPU_COMMON to CPUState
  cpu: Move breakpoints field from CPU_COMMON to CPUState
  cpu: Move tlb_flush_{addr,mask} fields from CPU_COMMON_TLB to CPUState
  exec: Change tlb_fill() argument to CPUState
  cpu-exec: Change cpu_loop_exit() argument to CPUState
  translate-all: Change cpu_restore_state() argument to CPUState
  translate-all: Change cpu_restore_state_from_tb() argument to CPUState
  translate-all: Change tb_check_watchpoint() argument to CPUState
  translate-all: Change cpu_io_recompile() argument to CPUState
  translate-all: Change tb_gen_code() argument to CPUState
  translate-all: Change tb_flush_jmp_cache() argument to CPUState
  target-ppc: Use PowerPCCPU in PowerPCCPUClass::handle_mmu_fault hook
  exec: Change cpu_watchpoint_{insert,remove{,_by_ref,_all}} argument
  exec: Change cpu_breakpoint_{insert,remove{,_by_ref,_all}} argument
  cpu-exec: Change cpu_resume_from_signal() argument to CPUState
  cputlb: Change tlb_update_dirty() argument to CPUState
  exec: Change memory_region_section_get_iotlb() argument to CPUState
  cputlb: Change tlb_set_page() argument to CPUState
  cputlb: Change tlb_set_page() argument to CPUState
  exec: Change cpu_abort() argument to CPUState
  target-cris: Replace DisasContext::env field with CRISCPU
  target-lm32: Replace DisasContext::env field with LM32CPU
  target-microblaze: Replace DisasContext::env field with MicroBlazeCPU
  target-lm32: Move features field from CPULM32State to LM32CPU
  cputlb: Change tlb_flush_page() argument to CPUState
  cputlb: Change tlb_flush() argument to CPUState
  user-exec: Change exception_action() argument to CPUState

 bsd-user/main.c                    |   2 +-
 cpu-exec.c                         | 111 ++++++++++----------
 cpus.c                             |  25 +++--
 cputlb.c                           |  60 +++++------
 exec.c                             | 154 +++++++++++----------------
 gdbstub.c                          |  48 ++++-----
 hw/i386/kvmvapic.c                 |  15 +--
 hw/ppc/e500.c                      |   3 +-
 hw/ppc/ppce500_spin.c              |   2 +-
 hw/ppc/spapr_hcall.c               |   2 +-
 hw/s390x/s390-virtio.c             |   8 +-
 hw/sh4/sh7750.c                    |   2 +-
 include/exec/cpu-all.h             |  24 -----
 include/exec/cpu-defs.h            |  65 ------------
 include/exec/cputlb.h              |   6 +-
 include/exec/exec-all.h            |  43 ++++----
 include/exec/gen-icount.h          |  10 +-
 include/exec/softmmu_header.h      |   4 +-
 include/exec/softmmu_template.h    |  22 ++--
 include/qom/cpu.h                  | 122 +++++++++++++++++++++-
 linux-user/elfload.c               |  10 +-
 linux-user/linuxload.c             |   3 +-
 linux-user/m68k-sim.c              |   3 +-
 linux-user/m68k/target_cpu.h       |   4 +-
 linux-user/main.c                  | 121 +++++++++++++--------
 linux-user/signal.c                |  24 +++--
 linux-user/syscall.c               |  30 +++---
 linux-user/vm86.c                  |  27 +++--
 qom/cpu.c                          |  18 ++++
 target-alpha/cpu.c                 |  64 ++++++++++--
 target-alpha/cpu.h                 |  52 +---------
 target-alpha/helper.c              |  38 ++++---
 target-alpha/mem_helper.c          |  16 +--
 target-alpha/sys_helper.c          |   4 +-
 target-alpha/translate.c           |   6 +-
 target-arm/arm-semi.c              |   9 +-
 target-arm/cpu.c                   |  51 ++++++++-
 target-arm/cpu.h                   |  39 +------
 target-arm/helper.c                | 110 +++++++++++++-------
 target-arm/op_helper.c             |  33 +++---
 target-arm/translate.c             |   6 +-
 target-cris/cpu.c                  |  36 ++++++-
 target-cris/cpu.h                  |  26 +----
 target-cris/helper.c               |  46 ++++----
 target-cris/mmu.c                  |   3 +-
 target-cris/op_helper.c            |  28 +++--
 target-cris/translate.c            |  21 ++--
 target-cris/translate_v10.c        |  16 +--
 target-i386/cpu.c                  |  54 ++++++++--
 target-i386/cpu.h                  |  37 +------
 target-i386/excp_helper.c          |   6 +-
 target-i386/helper.c               |  78 +++++++++-----
 target-i386/kvm.c                  |   8 +-
 target-i386/machine.c              |   7 +-
 target-i386/mem_helper.c           |  16 +--
 target-i386/misc_helper.c          |  14 ++-
 target-i386/seg_helper.c           |  18 ++--
 target-i386/svm_helper.c           |  26 ++---
 target-i386/translate.c            |   6 +-
 target-lm32/cpu-qom.h              |   3 +
 target-lm32/cpu.c                  |  25 ++++-
 target-lm32/cpu.h                  |  24 +----
 target-lm32/helper.c               |  26 ++---
 target-lm32/op_helper.c            |  23 ++--
 target-lm32/translate.c            |  67 ++++++------
 target-m68k/cpu.c                  |  36 ++++++-
 target-m68k/cpu.h                  |  24 +----
 target-m68k/helper.c               |  24 +++--
 target-m68k/m68k-semi.c            |   5 +-
 target-m68k/op_helper.c            |  34 +++---
 target-m68k/qregs.def              |   1 -
 target-m68k/translate.c            |  13 ++-
 target-microblaze/cpu.c            |  42 +++++++-
 target-microblaze/cpu.h            |  28 +----
 target-microblaze/helper.c         |  34 +++---
 target-microblaze/mmu.c            |   8 +-
 target-microblaze/op_helper.c      |  19 ++--
 target-microblaze/translate.c      | 110 +++++++++++---------
 target-mips/cpu.c                  |  58 ++++++++++-
 target-mips/cpu.h                  |  46 +-------
 target-mips/helper.c               |  56 ++++++----
 target-mips/machine.c              |   3 +-
 target-mips/op_helper.c            |  34 ++++--
 target-mips/translate.c            |   9 +-
 target-mips/translate_init.c       |   4 +-
 target-moxie/cpu.c                 |  26 ++++-
 target-moxie/cpu.h                 |  20 +---
 target-moxie/helper.c              |  51 +++++----
 target-moxie/translate.c           |   4 +-
 target-openrisc/cpu.c              |  45 +++++++-
 target-openrisc/cpu.h              |  28 +----
 target-openrisc/exception.c        |   6 +-
 target-openrisc/interrupt.c        |  29 +++---
 target-openrisc/interrupt_helper.c |   2 +-
 target-openrisc/mmu.c              |  17 +--
 target-openrisc/mmu_helper.c       |   8 +-
 target-openrisc/sys_helper.c       |   6 +-
 target-openrisc/translate.c        |   7 +-
 target-ppc/cpu-qom.h               |   8 +-
 target-ppc/cpu.h                   |  26 +----
 target-ppc/excp_helper.c           |  73 ++++++-------
 target-ppc/fpu_helper.c            |  26 +++--
 target-ppc/helper_regs.h           |   2 +-
 target-ppc/misc_helper.c           |   4 +-
 target-ppc/mmu-hash32.c            |  35 ++++---
 target-ppc/mmu-hash32.h            |   2 +-
 target-ppc/mmu-hash64.c            |  28 ++---
 target-ppc/mmu-hash64.h            |   2 +-
 target-ppc/mmu_helper.c            | 208 +++++++++++++++++++++----------------
 target-ppc/translate.c             |   4 +-
 target-ppc/translate_init.c        |  44 ++++++--
 target-ppc/user_only_helper.c      |   8 +-
 target-s390x/cc_helper.c           |   5 +-
 target-s390x/cpu.c                 |  48 +++++++--
 target-s390x/cpu.h                 |  32 +-----
 target-s390x/fpu_helper.c          |   4 +-
 target-s390x/helper.c              |  85 ++++++++-------
 target-s390x/mem_helper.c          |  52 ++++++----
 target-s390x/misc_helper.c         |  33 +++---
 target-s390x/translate.c           |   4 +-
 target-sh4/cpu.c                   |  42 ++++++--
 target-sh4/cpu.h                   |  28 +----
 target-sh4/helper.c                | 108 ++++++++++---------
 target-sh4/op_helper.c             |  20 ++--
 target-sh4/translate.c             |   4 +-
 target-sparc/cpu.c                 |  75 ++++++++++++-
 target-sparc/cpu.h                 |  59 +----------
 target-sparc/helper.c              |  28 ++---
 target-sparc/int32_helper.c        |  10 +-
 target-sparc/int64_helper.c        |   8 +-
 target-sparc/ldst_helper.c         |  36 ++++---
 target-sparc/machine.c             |   3 +-
 target-sparc/mmu_helper.c          |  40 ++++---
 target-sparc/translate.c           |   6 +-
 target-unicore32/cpu.c             |  35 ++++++-
 target-unicore32/cpu.h             |  26 +----
 target-unicore32/helper.c          |  18 ++--
 target-unicore32/op_helper.c       |  14 +--
 target-unicore32/softmmu.c         |  27 +++--
 target-unicore32/translate.c       |  32 +++++-
 target-unicore32/ucf64_helper.c    |   3 +-
 target-xtensa/cpu.c                |  50 +++++++++
 target-xtensa/cpu.h                |  44 +-------
 target-xtensa/helper.c             |  30 +++---
 target-xtensa/op_helper.c          |  50 +++++----
 target-xtensa/translate.c          |   5 +-
 translate-all.c                    | 118 +++++++++++----------
 translate-all.h                    |   2 +-
 user-exec.c                        |  28 +++--
 149 files changed, 2536 insertions(+), 1993 deletions(-)

-- 
1.8.1.4




reply via email to

[Prev in Thread] Current Thread [Next in Thread]