1. 25 Sep, 2014 1 commit
  2. 17 Aug, 2014 1 commit
  3. 12 Aug, 2014 1 commit
  4. 05 Jun, 2014 4 commits
  5. 28 May, 2014 1 commit
  6. 26 Mar, 2014 1 commit
  7. 13 Mar, 2014 15 commits
  8. 11 Mar, 2014 1 commit
    • Sebastian Huber's avatar
      target-sparc: Add and use CPU_FEATURE_CASA · 16c358e9
      Sebastian Huber authored
      The LEON3 processor has support for the CASA instruction which is
      normally only available for SPARC V9 processors.  Binutils 2.24
      and GCC 4.9 will support this instruction for LEON3.  GCC uses it to
      generate C11 atomic operations.
      
      The CAS synthetic instruction uses an ASI of 0x80.  If TARGET_SPARC64 is
      not defined use a supervisor data load/store for an ASI of 0x80 in
      helper_ld_asi()/helper_st_asi().  The supervisor data load/store was
      choosen according to the LEON3 documentation.
      
      The ASI 0x80 is defined in the SPARC V9 manual, Table 12—Address Space
      Identifiers (ASIs).  Here we have: 0x80, ASI_PRIMARY, Unrestricted
      access, Primary address space.
      
      Tested with the following program:
      
        #include <assert.h>
        #include <stdatomic.h>
      
        void test(void)
        {
          atomic_int a;
          int e;
          _Bool b;
      
          atomic_store(&a, 1);
          e = 1;
          b = atomic_compare_exchange_strong(&a, &e, 2);
          assert(b);
          assert(atomic_load(&a) == 2);
      
          atomic_store(&a, 3);
          e = 4;
          b = atomic_compare_exchange_strong(&a, &e, 5);
          assert(!b);
          assert(atomic_load(&a) == 3);
        }
      
      Tested also on a NGMP board with a LEON4 processor.
      Reviewed-by: default avatarFabien Chouteau <chouteau@adacore.com>
      Reviewed-by: default avatarAndreas Färber <afaerber@suse.de>
      Tested-by: default avatarMark Cave-Ayland <mark.cave-ayland@ilande.co.uk>
      Reviewed-by: default avatarRichard Henderson <rth@twiddle.net>
      Signed-off-by: default avatarSebastian Huber <sebastian.huber@embedded-brains.de>
      Signed-off-by: default avatarMark Cave-Ayland <mark.cave-ayland@ilande.co.uk>
      16c358e9
  9. 11 Feb, 2014 8 commits
  10. 14 Jan, 2014 1 commit
  11. 02 Dec, 2013 1 commit
  12. 10 Oct, 2013 2 commits
  13. 07 Oct, 2013 1 commit
  14. 02 Sep, 2013 1 commit
  15. 29 Jul, 2013 1 commit
    • Andreas Färber's avatar
      cpu: Partially revert "cpu: Change qemu_init_vcpu() argument to CPUState" · 14a10fc3
      Andreas Färber authored
      Commit c643bed9 moved qemu_init_vcpu() calls to common CPUState code.
      This causes x86 cpu-add to fail with "KVM: setting VAPIC address failed".
      
      The reason for the failure is that CPUClass::kvm_fd is not yet
      initialized in the following call graph:
      ->x86_cpu_realizefn
       ->x86_cpu_apic_realize
        ->qdev_init
         ->device_set_realized
          ->device_reset (hotplugged == 1)
           ->apic_reset_common
            ->vapic_base_update
             ->kvm_apic_vapic_base_update
      This causes attempted KVM vCPU ioctls to fail.
      
      By contrast, in the non-hotplug case the APIC is reset much later, when
      the vCPU is already initialized.
      
      As a quick and safe solution, move the qemu_init_vcpu() call back into
      the targets' realize functions.
      Reported-by: default avatarChen Fan <chen.fan.fnst@cn.fujitsu.com>
      Acked-by: Igor Mammedov <imammedo@redhat.com> (for i386)
      Tested-by: Jia Liu <proljc@gmail.com> (for openrisc)
      Signed-off-by: default avatarAndreas Färber <afaerber@suse.de>
      14a10fc3