On Fri, 4 Feb 2011, Tony Lindgren wrote:
* Nicolas Pitre [off-list ref] [110204 12:14]:
quoted
Just create a get_config_ptr macro or similar and the trickery will be
nicely encapsulated. You'd have:
.macro get_config_ptr ptr, tmp
b 9002f
.align
9001: .long .
.long uart_param_storage
9002: adr \ptr, 9001b
ldr \tmp, [\ptr]
sub \tmp, \tmp, \ptr
ldr \ptr, [\ptr, #4]
sub \ptr, \ptr, \tmp
.endm
.macro addruart rp, rv
get_config_ptr \rv
ldr \rp, [\rv]
ldr \rv, [\rv, #4]
.endm
And for the other macros, you get the hardware address to use already,
but you can still use get_config_ptr for extra config values you
need if necessary.
Thanks, will try that out next week. That might run into problems with
busyuart as it only has rd register to play with.
With some code auditing we could declare ip as being callee clobberable
with those macros.
Nicolas