1. 17 1月, 2017 1 次提交
  2. 16 1月, 2017 5 次提交
    • M
      target/xtensa: implement MEMCTL SR · 9e03ade4
      Max Filippov 提交于
      MEMCTL SR controls zero overhead loop buffer and number of ways enabled
      in L1 caches.
      Signed-off-by: NMax Filippov <jcmvbkbc@gmail.com>
      9e03ade4
    • M
      target/xtensa: support icount · d2132510
      Max Filippov 提交于
      Delimit each instruction that may access timers or IRQ state with
      qemu_io_start/qemu_io_end, so that qemu-system-xtensa could be run with
      -icount option.
      
      Raise EXCP_YIELD after CCOMPARE reprogramming to let tcg_cpu_exec
      recalculate how long this CPU is allowed to run.
      
      RSR now may need to terminate TB, but it can't be done in RSR handler
      because the same handler is used for XSR together with WSR handler, which
      may also need to terminate TB. Change RSR and WSR handlers return type
      to bool indicating whether TB termination is needed (RSR) or has been
      done (WSR), and add TB termination after RSR/WSR dispatcher call.
      Signed-off-by: NMax Filippov <jcmvbkbc@gmail.com>
      d2132510
    • M
      target/xtensa: refactor CCOUNT/CCOMPARE · 59a71f75
      Max Filippov 提交于
      Xtensa cores may have a register (CCOUNT) that counts core clock cycles.
      It may also have a number of registers (CCOMPAREx); when CCOUNT value
      passes the value of CCOMPAREx, timer interrupt x is raised.
      
      Currently xtensa target counts a number of completed instructions and
      assumes that for CCOUNT one instruction takes one cycle to complete.
      It calls helper function to update CCOUNT register at every TB end and
      raise timer interrupts. This scheme works very predictably and doesn't
      have noticeable performance impact, but it is hard to use with multiple
      synchronized processors, especially with coming MTTCG.
      
      Derive CCOUNT from the virtual simulation time, QEMU_CLOCK_VIRTUAL.
      Use native QEMU timers for CCOMPARE timers, one timer for each register.
      Signed-off-by: NMax Filippov <jcmvbkbc@gmail.com>
      59a71f75
    • M
      target/xtensa: implement RUNSTALL · bd527a83
      Max Filippov 提交于
      RUNSTALL signal stalls core execution while it's applied. It is widely
      used in multicore configurations to control activity of additional
      cores.
      Signed-off-by: NMax Filippov <jcmvbkbc@gmail.com>
      bd527a83
    • M
      target/xtensa: add static vectors selection · 17ab14ac
      Max Filippov 提交于
      Xtensa cores may have two distinct addresses for the static vectors
      group. Provide a function to select one of them.
      Signed-off-by: NMax Filippov <jcmvbkbc@gmail.com>
      17ab14ac
  3. 21 12月, 2016 1 次提交
    • T
      Move target-* CPU file into a target/ folder · fcf5ef2a
      Thomas Huth 提交于
      We've currently got 18 architectures in QEMU, and thus 18 target-xxx
      folders in the root folder of the QEMU source tree. More architectures
      (e.g. RISC-V, AVR) are likely to be included soon, too, so the main
      folder of the QEMU sources slowly gets quite overcrowded with the
      target-xxx folders.
      To disburden the main folder a little bit, let's move the target-xxx
      folders into a dedicated target/ folder, so that target-xxx/ simply
      becomes target/xxx/ instead.
      
      Acked-by: Laurent Vivier <laurent@vivier.eu> [m68k part]
      Acked-by: Bastian Koppelmann <kbastian@mail.uni-paderborn.de> [tricore part]
      Acked-by: Michael Walle <michael@walle.cc> [lm32 part]
      Acked-by: Cornelia Huck <cornelia.huck@de.ibm.com> [s390x part]
      Reviewed-by: Christian Borntraeger <borntraeger@de.ibm.com> [s390x part]
      Acked-by: Eduardo Habkost <ehabkost@redhat.com> [i386 part]
      Acked-by: Artyom Tarasenko <atar4qemu@gmail.com> [sparc part]
      Acked-by: Richard Henderson <rth@twiddle.net> [alpha part]
      Acked-by: Max Filippov <jcmvbkbc@gmail.com> [xtensa part]
      Reviewed-by: David Gibson <david@gibson.dropbear.id.au> [ppc part]
      Acked-by: Edgar E. Iglesias <edgar.iglesias@xilinx.com> [cris&microblaze part]
      Acked-by: Guan Xuetao <gxt@mprc.pku.edu.cn> [unicore32 part]
      Signed-off-by: NThomas Huth <thuth@redhat.com>
      fcf5ef2a
  4. 12 7月, 2016 2 次提交
  5. 29 6月, 2016 1 次提交
  6. 19 5月, 2016 2 次提交
  7. 13 5月, 2016 1 次提交
  8. 23 2月, 2016 1 次提交
  9. 22 10月, 2015 1 次提交
  10. 07 10月, 2015 1 次提交
  11. 25 9月, 2015 1 次提交
  12. 11 9月, 2015 1 次提交
  13. 09 7月, 2015 1 次提交
  14. 06 7月, 2015 2 次提交
    • M
      target-xtensa: fix gdb register map construction · 1479073b
      Max Filippov 提交于
      Due to different gdb overlay organization between windowed/call0
      configurations core import script doesn't always work correctly.
      Simplify the script: always copy complete gdb register map from overlay,
      count registers at core registerstion time. Update existing cores.
      Signed-off-by: NMax Filippov <jcmvbkbc@gmail.com>
      1479073b
    • M
      target-xtensa: add 64-bit floating point registers · ddd44279
      Max Filippov 提交于
      Xtensa ISA got specification for 64-bit floating point registers and
      opcodes, see ISA, 4.3.11 "Floating point coprocessor option".
      
      Add 64-bit FP registers.
      
      Although 64-bit floating point is currently not supported by xtensa
      translator, these registers need to be reported to gdb with proper size,
      otherwise it wouldn't find other registers.
      Signed-off-by: NMax Filippov <jcmvbkbc@gmail.com>
      ddd44279
  15. 11 3月, 2015 1 次提交
    • E
      cpu: Make cpu_init() return QOM CPUState object · 2994fd96
      Eduardo Habkost 提交于
      Instead of making cpu_init() return CPUArchState, return CPUState.
      
      Changes were made using the Coccinelle semantic patch below.
      
        @@
        typedef CPUState;
        identifier e;
        expression args;
        type CPUArchState;
        @@
        -   e =
        +   cpu =
                cpu_init(args);
        -   if (!e) {
        +   if (!cpu) {
                ...
            }
        -   cpu = ENV_GET_CPU(env);
        +   e = cpu->env_ptr;
      
        @@
        identifier new_env, new_cpu, env, cpu;
        type CPUArchState;
        expression args;
        @@
        -{
        -   CPUState *cpu = ENV_GET_CPU(env);
        -   CPUArchState *new_env = cpu_init(args);
        -   CPUState *new_cpu = ENV_GET_CPU(new_env);
        +{
        +   CPUState *cpu = ENV_GET_CPU(env);
        +   CPUState *new_cpu = cpu_init(args);
        +   CPUArchState *new_env = new_cpu->env_ptr;
            ...
        }
      
        @@
        identifier c, cpu_init_func, cpu_model;
        type StateType, CPUType;
        @@
        -static inline StateType* cpu_init(const char *cpu_model)
        -{
        -   CPUType *c = cpu_init_func(cpu_model);
        (
        -   if (c == NULL) {
        -       return NULL;
        -   }
        -   return &c->env;
        |
        -   if (c) {
        -       return &c->env;
        -   }
        -   return NULL;
        )
        -}
        +#define cpu_init(cpu_model) CPU(cpu_init_func(cpu_model))
      
        @@
        identifier cpu_init_func;
        identifier model;
        @@
        -#define cpu_init(model) (&cpu_init_func(model)->env)
        +#define cpu_init(model) CPU(cpu_init_func(model))
      Signed-off-by: NEduardo Habkost <ehabkost@redhat.com>
      Cc: Blue Swirl <blauwirbel@gmail.com>
      Cc: Guan Xuetao <gxt@mprc.pku.edu.cn>
      Cc: Riku Voipio <riku.voipio@iki.fi>
      Cc: Richard Henderson <rth@twiddle.net>
      Cc: Peter Maydell <peter.maydell@linaro.org>
      Cc: "Edgar E. Iglesias" <edgar.iglesias@gmail.com>
      Cc: Paolo Bonzini <pbonzini@redhat.com>
      Cc: Michael Walle <michael@walle.cc>
      Cc: Aurelien Jarno <aurelien@aurel32.net>
      Cc: Leon Alrae <leon.alrae@imgtec.com>
      Cc: Anthony Green <green@moxielogic.com>
      Cc: Jia Liu <proljc@gmail.com>
      Cc: Alexander Graf <agraf@suse.de>
      Cc: Bastian Koppelmann <kbastian@mail.uni-paderborn.de>
      Cc: Max Filippov <jcmvbkbc@gmail.com>
      [AF: Fixed up cpu_copy() manually]
      Signed-off-by: NAndreas Färber <afaerber@suse.de>
      2994fd96
  16. 20 1月, 2015 1 次提交
    • P
      exec.c: Drop TARGET_HAS_ICE define and checks · ec53b45b
      Peter Maydell 提交于
      The TARGET_HAS_ICE #define is intended to indicate whether a target-*
      guest CPU implementation supports the breakpoint handling. However,
      all our guest CPUs have that support (the only two which do not
      define TARGET_HAS_ICE are unicore32 and openrisc, and in both those
      cases the bp support is present and the lack of the #define is just
      a bug). So remove the #define entirely: all new guest CPU support
      should include breakpoint handling as part of the basic implementation.
      Signed-off-by: NPeter Maydell <peter.maydell@linaro.org>
      Reviewed-by: NRichard Henderson <rth@twiddle.net>
      Message-id: 1420484960-32365-1-git-send-email-peter.maydell@linaro.org
      ec53b45b
  17. 17 12月, 2014 1 次提交
  18. 10 11月, 2014 1 次提交
    • M
      target-xtensa: add missing window check for entry · 1b3e71f8
      Max Filippov 提交于
      Entry opcode needs to check if moving to new register frame would cause
      register window overflow. Entry used in function prologue never
      overflows because preceding windowed call* opcode writes return address
      to the target register window frame, causing overflow exceptions at the
      point of call. But when a sequence of entry opcodes is used for register
      window spilling there may not be a call or other opcode that would cause
      window check between entries and they would not raise overflow exception
      themselves resulting in data corruption.
      
      Cc: qemu-stable@nongnu.org
      Signed-off-by: NMax Filippov <jcmvbkbc@gmail.com>
      1b3e71f8
  19. 03 11月, 2014 1 次提交
  20. 12 9月, 2014 1 次提交
  21. 05 6月, 2014 1 次提交
  22. 14 3月, 2014 3 次提交
  23. 24 2月, 2014 1 次提交
  24. 29 7月, 2013 1 次提交
    • M
      target-xtensa: avoid double-stopping at breakpoints · a00817cc
      Max Filippov 提交于
      env->exception_taken is set every time an exception is taken. It is used
      to allow single-stepping to stop at the first exception handler
      instruction. This however must exclude debug exceptions, as otherwise
      first step from the instruction where breakpoint was hit stops at that
      same instruction.
      Also don't check env->exception_taken directly from the
      gen_intermediate_code_internal, instead allocate and use TB flag
      XTENSA_TBFLAG_EXCEPTION.
      Signed-off-by: NMax Filippov <jcmvbkbc@gmail.com>
      a00817cc
  25. 23 7月, 2013 1 次提交
  26. 12 3月, 2013 1 次提交
  27. 16 2月, 2013 1 次提交
  28. 19 12月, 2012 1 次提交
  29. 09 12月, 2012 3 次提交