This is the mail archive of the ecos-discuss@sources.redhat.com mailing list for the eCos project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]

ARM Assembler problem


Hi,

I've got following problem with GNU arm-elf-as (Host: i686-linux,
Target: ARM7TDMI):
Consider the following piece of code (simple delay loop):

  ldr     r2, .WAIT
loop:        
  sub     r2, r2, #1
  cmp     r2, #0
  bne     loop
  ...
.WAIT:
  .word   0x1000000

After assembling with "arm-elf-as -marm7tdmi file.S"
I had a closer look to a.out with "arm-elf-objdump -d a.out" and found 
      ...  
2c:   e59f2038    ldr     r2, [pc, #38]   ; 6c <.WAIT>
 
00000030 <loop>:
30:   e2422001    sub     r2, r2, #1      ; 0x1
34:   e3520000    cmp     r2, #0  ; 0x0
38:   1afffffe    bne     38 <loop+0x8>     
      ...
As you can see the assembler computed a wrong target address (opcode
1afffffe at address 38). The offset should be -2 resulting in an opcode
of 1afffffc. If I use a hex-editor to change the opcode in the binary
image, the program works as expected.

Is there a special option I forgot or is the assembler buggy (resp.
built wrong). Thanks in advance.

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]