Hi.
Does Valgrind -3.6.0 (or 3.6.1) support ARMv6 ?
My friend said that valgrind can't work on ARMv6 hardware. ( bad instruction 
of  movw and movt , in VEX/priv/host_arm_defs.c ; which are mandatory only on 
ARMv7. )

I thought:  ARMv7 use thumb2 instruction, and ARMv6 use thumb instruction, so 
ARMv7 including most of instructions of ARMv6. As valgrind support ARMv7, it 
also has the ability to support ARMv6 potentially.

I have read two source files as below:
VEX/priv/host_arm_defs.c   line 2617
if (VEX_ARM_ARCHLEVEL(arm_hwcaps) > 6) {
      /* Generate movw rD, #low16.  Then, if the high 16 are
         nonzero, generate movt rD, #high16. */
      UInt lo16 = imm32 & 0xFFFF;
      ……                                                // have delete some 
codes
      }
   } else {
      UInt imm, rot;
      …….                                               // have delete some 
codes
   }
      
And coregrind/m_machine.c   line 905 :
   /* ARM architecture level */
     archlevel = 5; /* v5 will be base level */
     if (archlevel < 7) {
        archlevel = 7;
        if (__builtin_setjmp(env_unsup_insn)) {
           archlevel = 5;
        } else {
           __asm__ __volatile__(".word 0xF45FF000"); /* PLI [PC,#-0] */
        }
     }
     if (archlevel < 6) {
        archlevel = 6;
        if (__builtin_setjmp(env_unsup_insn)) {
           archlevel = 5;
        } else {
           __asm__ __volatile__(".word 0xE6822012"); /* PKHBT r2, r2, r2 */
        }
     }

I think these code show us that valgrind has the structure to support ARMv6 
(and ARMv5).But, why my friend can’t use valgrind on ARMv6 hardware? Did him 
meet the case : valgrind support ARMv6 & my friend didn’t set valgrind well? 

Could you give me some suggestions? Thank you very much.

I found some information from web, please see as below:
"On ARM, essentially the entire ARMv7-A instruction set is supported, in both 
ARM and Thumb mode. ThumbEE and Jazelle are not supported. NEON and VFPv3 
support is fairly complete. ARMv6 media instruction support is mostly done but 
not yet complete. " 
--- From  http://valgrind.org/docs/manual/manual-core.html

As of early 2010, there is initial support for ARM/Linux. This is usable on 
Ubuntu 9.04 and Ubuntu 9.10 running on ARMv7 capable hardware (Cortex-A8). The 
repository currently contains support for the ARMv5 instruction set, some v6 
instructions, and VFPv1. Work is in progress to expand this to cover the 
entire ARMv7 instruction set, including NEON and Thumb2 support, and to 
support Ubuntu 10.04.
---From http://valgrind.org/downloads/repository.html



------------------------------------------------------------------------------
The ultimate all-in-one performance toolkit: Intel(R) Parallel Studio XE:
Pinpoint memory and threading errors before they happen.
Find and fix more than 250 security defects in the development cycle.
Locate bottlenecks in serial and parallel code that limit performance.
http://p.sf.net/sfu/intel-dev2devfeb
_______________________________________________
Valgrind-users mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/valgrind-users

Reply via email to