ARM Technical Support Knowledge Articles

ACCESSING PDATA VARIABLES IN ASSEMBLER

Applies to: A51 Macro Assembler

Answer


Information in this article applies to:


SYMPTOMS

In a C source file, I have declared a pdata variable called foo. I wish to access this variable in an assembly module, and I have written the following code to do this:

EXTRN XDATA (foo)
...
MOV R0, #foo
MOV @R0, A

However, when I build my project I get:

ERROR 121: IMPROPER FIXUP.

CAUSE

While using the EXTRN directive, you have specified the variable as xdata. This is correct since pdata variables are stored in xdata, however, the assembler assigns a 16-bit address to the variable, but only an 8-bit address exists for the pdata variable.

RESOLUTION

Move the lower byte of the 16-bit address of the variable into R0. The upper byte will be present on P2 during the memory access.

MOV R0, #LOW (foo)

Article last edited on: 2004-06-08 13:35:57

Rate this article

[Bad]
|
|
[Good]
Disagree? Move your mouse over the bar and click

Did you find this article helpful? Yes No

How can we improve this article?

Link to this article
Copyright © 2011 ARM Limited. All rights reserved. External (Open), Non-Confidential