qemu-devel
[Top][All Lists]
Advanced

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

[Qemu-devel] [Bug 1316115] [NEW] linux-user qemu-arm NEON support


From: Christopher Horler
Subject: [Qemu-devel] [Bug 1316115] [NEW] linux-user qemu-arm NEON support
Date: Mon, 05 May 2014 12:09:44 -0000

Public bug reported:

I was reading the mailing list and saw NEON support in QEmu was making
progress.

Is it not supported in user mode?  or am I running into something else
here?  (I've tried to include some what may be useful information)

using qemu from git (last commits as below):
fdaad47 Merge remote-tracking branch 
'remotes/pmaydell/tags/pull-target-arm-20140501' into staging
e50bf23 Merge remote-tracking branch 'remotes/kevin/tags/for-upstream' into 
staging
c090c10 Merge remote-tracking branch 'remotes/cohuck/tags/kvm_cap_helpers' into 
staging

(for completeness I should point out this is not actually
libQtCore.so.4.6.2 - the SONAME shows libQt5Core.so.5).

address@hidden:~/projects/src/CustomFirmware> qemu-arm -L ./root 
./root/usr/local/Trolltech/QtEmbedded-4.6.2-arm/lib/libQtCore.so.4.6.2 
qemu: unhandled CPU exception 0x2 - aborting
R00=00000000 R01=f6c84fdd R02=00000000 R03=00000000
R04=00000000 R05=00000000 R06=00000000 R07=00000000
R08=00000000 R09=00000000 R10=f6ff9d80 R11=00000000
R12=00000000 R13=f6c84d90 R14=00000000 R15=f6cdef74
PSR=00000010 ---- A usr32
qemu: uncaught target signal 6 (Aborted) - core dumped
Aborted


address@hidden:~/projects/src/CustomFirmware> arm-linux-gnueabihf-readelf -A 
./root/usr/local/Trolltech/QtEmbedded-4.6.2-arm/lib/libQtCore.so.4.6.2 
Attribute Section: aeabi
File Attributes
  Tag_CPU_name: "7-A"
  Tag_CPU_arch: v7
  Tag_CPU_arch_profile: Application
  Tag_ARM_ISA_use: Yes
  Tag_THUMB_ISA_use: Thumb-2
  Tag_FP_arch: VFPv3
  Tag_Advanced_SIMD_arch: NEONv1
  Tag_ABI_PCS_wchar_t: 4
  Tag_ABI_FP_denormal: Needed
  Tag_ABI_FP_exceptions: Needed
  Tag_ABI_FP_number_model: IEEE 754
  Tag_ABI_align_needed: 8-byte
  Tag_ABI_align_preserved: 8-byte, except leaf SP
  Tag_ABI_enum_size: int
  Tag_ABI_HardFP_use: SP and DP
  Tag_ABI_VFP_args: VFP registers
  Tag_ABI_optimization_goals: Aggressive Speed
  Tag_CPU_unaligned_access: v6
  Tag_DIV_use: Not allowed


address@hidden:~/projects/src/CustomFirmware> gdb qemu-arm
GNU gdb (GDB; openSUSE 13.1) 7.6.50.20130731-cvs
Copyright (C) 2013 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.  Type "show copying"
and "show warranty" for details.
This GDB was configured as "x86_64-suse-linux".
Type "show configuration" for configuration details.
For bug reporting instructions, please see:
<http://bugs.opensuse.org/>.
Find the GDB manual and other documentation resources online at:
<http://www.gnu.org/software/gdb/documentation/>.
For help, type "help".
Type "apropos word" to search for commands related to "word".
..
Reading symbols from /home/chorler/projects/bin/qemu-arm...done.
(gdb) list main.c:685
680
681         for(;;) {
682             cpu_exec_start(cs);
683             trapnr = cpu_arm_exec(env);
684             cpu_exec_end(cs);
685             switch(trapnr) {
686             case EXCP_UDEF:
687                 {
688                     TaskState *ts = cs->opaque;
689                     uint32_t opcode;
(gdb) break main.c:685
Breakpoint 3 at 0x60059773: file 
/home/chorler/projects/src/qemu/linux-user/main.c, line 685.
(gdb) run -L ./root 
./root/usr/local/Trolltech/QtEmbedded-4.6.2-arm/lib/libQtCore.so.4.6.2
Starting program: /home/chorler/projects/bin/qemu-arm -L ./root 
./root/usr/local/Trolltech/QtEmbedded-4.6.2-arm/lib/libQtCore.so.4.6.2
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/lib64/libthread_db.so.1".

Breakpoint 3, cpu_loop (address@hidden) at 
/home/chorler/projects/src/qemu/linux-user/main.c:685
685             switch(trapnr) {
(gdb) print trapnr
$1 = 2
(gdb) n
762                     if (trapnr == EXCP_BKPT) {
(gdb) n
760                     env->eabi = 1;
(gdb) n
762                     if (trapnr == EXCP_BKPT) {
(gdb) n
775                         if (env->thumb) {
(gdb) n
777                             get_user_code_u16(insn, env->regs[15] - 2,
(gdb) n
775                         if (env->thumb) {
(gdb) n
782                             get_user_code_u32(insn, env->regs[15] - 4,
(gdb) n
784                             n = insn & 0xffffff;
(gdb) n
788                     if (n == ARM_NR_cacheflush) {
(gdb) print n
$2 = 587775
(gdb) n
790                     } else if (n == ARM_NR_semihosting
(gdb) n
793                     } else if (n == 0 || n >= ARM_SYSCALL_BASE || 
env->thumb) {
(gdb) n
872                 fprintf(stderr, "qemu: unhandled CPU exception 0x%x - 
aborting\n",
(gdb) n
qemu: unhandled CPU exception 0x2 - aborting
874                 cpu_dump_state(cs, stderr, fprintf, 0);
(gdb) print env
$3 = (CPUARMState *) 0x6255e650
(gdb) print *env
$4 = {regs = {0, 4140322822, 0, 0, 0, 0, 0, 0, 0, 0, 4143947136, 0, 0, 
4140322224, 0, 4140691316}, xregs = {0 <repeats 32 times>}, pc = 0, pstate = 0, 
aarch64 = 0, uncached_cpsr = 16, 
  spsr = 0, banked_spsr = {0, 0, 0, 0, 0, 0}, banked_r13 = {0, 0, 0, 0, 0, 0}, 
banked_r14 = {0, 0, 0, 0, 0, 0}, usr_regs = {0, 0, 0, 0, 0}, fiq_regs = {0, 0, 
0, 0, 0}, CF = 0, VF = 0, 
  NF = 16, ZF = 1073741824, QF = 0, GE = 0, thumb = 0, condexec_bits = 0, daif 
= 0, elr_el1 = 0, sp_el = {0, 0}, cp15 = {c0_cpuid = 0, c0_cssel = 0, c1_sys = 
0, c1_coproc = 15728640, 
    c1_xscaleauxcr = 0, c1_scr = 0, ttbr0_el1 = 0, ttbr1_el1 = 0, c2_control = 
0, c2_mask = 0, c2_base_mask = 4294950912, c2_data = 0, c2_insn = 0, c3 = 0, 
pmsav5_data_ap = 0, 
    pmsav5_insn_ap = 0, ifsr_el2 = 0, esr_el1 = 0, c6_region = {0, 0, 0, 0, 0, 
0, 0, 0}, far_el1 = 0, par_el1 = 0, c9_insn = 0, c9_data = 0, c9_pmcr = 0, 
c9_pmcnten = 0, c9_pmovsr = 0, 
    c9_pmxevtyper = 0, c9_pmuserenr = 0, c9_pminten = 0, mair_el1 = 0, c12_vbar 
= 0, c13_fcse = 0, contextidr_el1 = 0, tpidr_el0 = 0, tpidrro_el0 = 0, 
tpidr_el1 = 0, c14_cntfrq = 0, 
    c14_cntkctl = 0, c14_timer = {{cval = 0, ctl = 0}, {cval = 0, ctl = 0}}, 
c15_cpar = 0, c15_ticonfig = 0, c15_i_max = 0, c15_i_min = 0, c15_threadid = 0, 
c15_config_base_address = 0, 
    c15_diagnostic = 0, c15_power_diagnostic = 0, c15_power_control = 0, dbgbvr 
= {0 <repeats 16 times>}, dbgbcr = {0 <repeats 16 times>}, dbgwvr = {0 <repeats 
16 times>}, dbgwcr = {
      0 <repeats 16 times>}, c15_ccnt = 0}, v7m = {other_sp = 0, vecbase = 0, 
basepri = 0, control = 0, current_sp = 0, exception = 0, pending_exception = 
0}, exception = {
    syndrome = 1174468607, fsr = 0, vaddress = 0}, teecr = 0, teehbr = 0, vfp = 
{regs = {0 <repeats 64 times>}, xregs = {0, 0, 0, 0, 0, 0, 0, 0, 1073741824, 0, 
0, 0, 0, 0, 0, 0}, 
    vec_len = 0, vec_stride = 0, scratch = {0, 0, 0, 0, 0, 0, 0, 0}, fp_status 
= {float_detect_tininess = 1 '\001', float_rounding_mode = 0 '\000', 
float_exception_flags = 0 '\000', 
      floatx80_rounding_precision = 0 '\000', flush_to_zero = 0 '\000', 
flush_inputs_to_zero = 0 '\000', default_nan_mode = 0 '\000'}, 
standard_fp_status = {float_detect_tininess = 1 '\001', 
      float_rounding_mode = 0 '\000', float_exception_flags = 0 '\000', 
floatx80_rounding_precision = 0 '\000', flush_to_zero = 1 '\001', 
flush_inputs_to_zero = 1 '\001', 
      default_nan_mode = 1 '\001'}}, exclusive_addr = 0, exclusive_val = 0, 
exclusive_high = 0, exclusive_test = 0, exclusive_info = 0, iwmmxt = {regs = {0 
<repeats 16 times>}, val = 0, 
    cregs = {0 <repeats 16 times>}}, bswap_code = false, eabi = 1, features = 
93977026291, nvic = 0x0, boot_info = 0x0}
(gdb) quit
A debugging session is active.

        Inferior 1 [process 13185] will be killed.

Quit anyway? (y or n) y

** Affects: qemu
     Importance: Undecided
         Status: New


** Tags: neon qemu-arm

-- 
You received this bug notification because you are a member of qemu-
devel-ml, which is subscribed to QEMU.
https://bugs.launchpad.net/bugs/1316115

Title:
  linux-user qemu-arm NEON support

Status in QEMU:
  New

Bug description:
  I was reading the mailing list and saw NEON support in QEmu was making
  progress.

  Is it not supported in user mode?  or am I running into something else
  here?  (I've tried to include some what may be useful information)

  using qemu from git (last commits as below):
  fdaad47 Merge remote-tracking branch 
'remotes/pmaydell/tags/pull-target-arm-20140501' into staging
  e50bf23 Merge remote-tracking branch 'remotes/kevin/tags/for-upstream' into 
staging
  c090c10 Merge remote-tracking branch 'remotes/cohuck/tags/kvm_cap_helpers' 
into staging

  (for completeness I should point out this is not actually
  libQtCore.so.4.6.2 - the SONAME shows libQt5Core.so.5).

  address@hidden:~/projects/src/CustomFirmware> qemu-arm -L ./root 
./root/usr/local/Trolltech/QtEmbedded-4.6.2-arm/lib/libQtCore.so.4.6.2 
  qemu: unhandled CPU exception 0x2 - aborting
  R00=00000000 R01=f6c84fdd R02=00000000 R03=00000000
  R04=00000000 R05=00000000 R06=00000000 R07=00000000
  R08=00000000 R09=00000000 R10=f6ff9d80 R11=00000000
  R12=00000000 R13=f6c84d90 R14=00000000 R15=f6cdef74
  PSR=00000010 ---- A usr32
  qemu: uncaught target signal 6 (Aborted) - core dumped
  Aborted

  
  address@hidden:~/projects/src/CustomFirmware> arm-linux-gnueabihf-readelf -A 
./root/usr/local/Trolltech/QtEmbedded-4.6.2-arm/lib/libQtCore.so.4.6.2 
  Attribute Section: aeabi
  File Attributes
    Tag_CPU_name: "7-A"
    Tag_CPU_arch: v7
    Tag_CPU_arch_profile: Application
    Tag_ARM_ISA_use: Yes
    Tag_THUMB_ISA_use: Thumb-2
    Tag_FP_arch: VFPv3
    Tag_Advanced_SIMD_arch: NEONv1
    Tag_ABI_PCS_wchar_t: 4
    Tag_ABI_FP_denormal: Needed
    Tag_ABI_FP_exceptions: Needed
    Tag_ABI_FP_number_model: IEEE 754
    Tag_ABI_align_needed: 8-byte
    Tag_ABI_align_preserved: 8-byte, except leaf SP
    Tag_ABI_enum_size: int
    Tag_ABI_HardFP_use: SP and DP
    Tag_ABI_VFP_args: VFP registers
    Tag_ABI_optimization_goals: Aggressive Speed
    Tag_CPU_unaligned_access: v6
    Tag_DIV_use: Not allowed


  address@hidden:~/projects/src/CustomFirmware> gdb qemu-arm
  GNU gdb (GDB; openSUSE 13.1) 7.6.50.20130731-cvs
  Copyright (C) 2013 Free Software Foundation, Inc.
  License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
  This is free software: you are free to change and redistribute it.
  There is NO WARRANTY, to the extent permitted by law.  Type "show copying"
  and "show warranty" for details.
  This GDB was configured as "x86_64-suse-linux".
  Type "show configuration" for configuration details.
  For bug reporting instructions, please see:
  <http://bugs.opensuse.org/>.
  Find the GDB manual and other documentation resources online at:
  <http://www.gnu.org/software/gdb/documentation/>.
  For help, type "help".
  Type "apropos word" to search for commands related to "word".
  ..
  Reading symbols from /home/chorler/projects/bin/qemu-arm...done.
  (gdb) list main.c:685
  680
  681         for(;;) {
  682             cpu_exec_start(cs);
  683             trapnr = cpu_arm_exec(env);
  684             cpu_exec_end(cs);
  685             switch(trapnr) {
  686             case EXCP_UDEF:
  687                 {
  688                     TaskState *ts = cs->opaque;
  689                     uint32_t opcode;
  (gdb) break main.c:685
  Breakpoint 3 at 0x60059773: file 
/home/chorler/projects/src/qemu/linux-user/main.c, line 685.
  (gdb) run -L ./root 
./root/usr/local/Trolltech/QtEmbedded-4.6.2-arm/lib/libQtCore.so.4.6.2
  Starting program: /home/chorler/projects/bin/qemu-arm -L ./root 
./root/usr/local/Trolltech/QtEmbedded-4.6.2-arm/lib/libQtCore.so.4.6.2
  [Thread debugging using libthread_db enabled]
  Using host libthread_db library "/lib64/libthread_db.so.1".

  Breakpoint 3, cpu_loop (address@hidden) at 
/home/chorler/projects/src/qemu/linux-user/main.c:685
  685             switch(trapnr) {
  (gdb) print trapnr
  $1 = 2
  (gdb) n
  762                     if (trapnr == EXCP_BKPT) {
  (gdb) n
  760                     env->eabi = 1;
  (gdb) n
  762                     if (trapnr == EXCP_BKPT) {
  (gdb) n
  775                         if (env->thumb) {
  (gdb) n
  777                             get_user_code_u16(insn, env->regs[15] - 2,
  (gdb) n
  775                         if (env->thumb) {
  (gdb) n
  782                             get_user_code_u32(insn, env->regs[15] - 4,
  (gdb) n
  784                             n = insn & 0xffffff;
  (gdb) n
  788                     if (n == ARM_NR_cacheflush) {
  (gdb) print n
  $2 = 587775
  (gdb) n
  790                     } else if (n == ARM_NR_semihosting
  (gdb) n
  793                     } else if (n == 0 || n >= ARM_SYSCALL_BASE || 
env->thumb) {
  (gdb) n
  872                 fprintf(stderr, "qemu: unhandled CPU exception 0x%x - 
aborting\n",
  (gdb) n
  qemu: unhandled CPU exception 0x2 - aborting
  874                 cpu_dump_state(cs, stderr, fprintf, 0);
  (gdb) print env
  $3 = (CPUARMState *) 0x6255e650
  (gdb) print *env
  $4 = {regs = {0, 4140322822, 0, 0, 0, 0, 0, 0, 0, 0, 4143947136, 0, 0, 
4140322224, 0, 4140691316}, xregs = {0 <repeats 32 times>}, pc = 0, pstate = 0, 
aarch64 = 0, uncached_cpsr = 16, 
    spsr = 0, banked_spsr = {0, 0, 0, 0, 0, 0}, banked_r13 = {0, 0, 0, 0, 0, 
0}, banked_r14 = {0, 0, 0, 0, 0, 0}, usr_regs = {0, 0, 0, 0, 0}, fiq_regs = {0, 
0, 0, 0, 0}, CF = 0, VF = 0, 
    NF = 16, ZF = 1073741824, QF = 0, GE = 0, thumb = 0, condexec_bits = 0, 
daif = 0, elr_el1 = 0, sp_el = {0, 0}, cp15 = {c0_cpuid = 0, c0_cssel = 0, 
c1_sys = 0, c1_coproc = 15728640, 
      c1_xscaleauxcr = 0, c1_scr = 0, ttbr0_el1 = 0, ttbr1_el1 = 0, c2_control 
= 0, c2_mask = 0, c2_base_mask = 4294950912, c2_data = 0, c2_insn = 0, c3 = 0, 
pmsav5_data_ap = 0, 
      pmsav5_insn_ap = 0, ifsr_el2 = 0, esr_el1 = 0, c6_region = {0, 0, 0, 0, 
0, 0, 0, 0}, far_el1 = 0, par_el1 = 0, c9_insn = 0, c9_data = 0, c9_pmcr = 0, 
c9_pmcnten = 0, c9_pmovsr = 0, 
      c9_pmxevtyper = 0, c9_pmuserenr = 0, c9_pminten = 0, mair_el1 = 0, 
c12_vbar = 0, c13_fcse = 0, contextidr_el1 = 0, tpidr_el0 = 0, tpidrro_el0 = 0, 
tpidr_el1 = 0, c14_cntfrq = 0, 
      c14_cntkctl = 0, c14_timer = {{cval = 0, ctl = 0}, {cval = 0, ctl = 0}}, 
c15_cpar = 0, c15_ticonfig = 0, c15_i_max = 0, c15_i_min = 0, c15_threadid = 0, 
c15_config_base_address = 0, 
      c15_diagnostic = 0, c15_power_diagnostic = 0, c15_power_control = 0, 
dbgbvr = {0 <repeats 16 times>}, dbgbcr = {0 <repeats 16 times>}, dbgwvr = {0 
<repeats 16 times>}, dbgwcr = {
        0 <repeats 16 times>}, c15_ccnt = 0}, v7m = {other_sp = 0, vecbase = 0, 
basepri = 0, control = 0, current_sp = 0, exception = 0, pending_exception = 
0}, exception = {
      syndrome = 1174468607, fsr = 0, vaddress = 0}, teecr = 0, teehbr = 0, vfp 
= {regs = {0 <repeats 64 times>}, xregs = {0, 0, 0, 0, 0, 0, 0, 0, 1073741824, 
0, 0, 0, 0, 0, 0, 0}, 
      vec_len = 0, vec_stride = 0, scratch = {0, 0, 0, 0, 0, 0, 0, 0}, 
fp_status = {float_detect_tininess = 1 '\001', float_rounding_mode = 0 '\000', 
float_exception_flags = 0 '\000', 
        floatx80_rounding_precision = 0 '\000', flush_to_zero = 0 '\000', 
flush_inputs_to_zero = 0 '\000', default_nan_mode = 0 '\000'}, 
standard_fp_status = {float_detect_tininess = 1 '\001', 
        float_rounding_mode = 0 '\000', float_exception_flags = 0 '\000', 
floatx80_rounding_precision = 0 '\000', flush_to_zero = 1 '\001', 
flush_inputs_to_zero = 1 '\001', 
        default_nan_mode = 1 '\001'}}, exclusive_addr = 0, exclusive_val = 0, 
exclusive_high = 0, exclusive_test = 0, exclusive_info = 0, iwmmxt = {regs = {0 
<repeats 16 times>}, val = 0, 
      cregs = {0 <repeats 16 times>}}, bswap_code = false, eabi = 1, features = 
93977026291, nvic = 0x0, boot_info = 0x0}
  (gdb) quit
  A debugging session is active.

          Inferior 1 [process 13185] will be killed.

  Quit anyway? (y or n) y

To manage notifications about this bug go to:
https://bugs.launchpad.net/qemu/+bug/1316115/+subscriptions



reply via email to

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