diff options
author | Paul Gortmaker <paul.gortmaker@gmail.com> | 2009-05-07 17:18:40 +0200 |
---|---|---|
committer | Russell King <rmk+kernel@arm.linux.org.uk> | 2009-05-07 18:21:01 +0200 |
commit | ae51e609843f7d0aaeb1c2ad9f89d252a4899885 (patch) | |
tree | af632106715c1c3db9c974fdecf6903e86eef1ed /drivers | |
parent | [ARM] 5506/1: davinci: DMA_32BIT_MASK --> DMA_BIT_MASK(32) (diff) | |
download | linux-ae51e609843f7d0aaeb1c2ad9f89d252a4899885.tar.xz linux-ae51e609843f7d0aaeb1c2ad9f89d252a4899885.zip |
[ARM] 5507/1: support R_ARM_MOVW_ABS_NC and MOVT_ABS relocation types
From: Bruce Ashfield <bruce.ashfield@windriver.com>
To fully support the armv7-a instruction set/optimizations, support
for the R_ARM_MOVW_ABS_NC and R_ARM_MOVT_ABS relocation types is
required.
The MOVW and MOVT are both load-immediate instructions, MOVW loads 16
bits into the bottom half of a register, and MOVT loads 16 bits into the
top half of a register.
The relocation information for these instructions has a full 32 bit
value, plus an addend which is stored in the 16 immediate bits in the
instruction itself. The immediate bits in the instruction are not
contiguous (the register # splits it into a 4 bit and 12 bit value),
so the addend has to be extracted accordingly and added to the value.
The value is then split and put into the instruction; a MOVW uses the
bottom 16 bits of the value, and a MOVT uses the top 16 bits.
Signed-off-by: David Borman <david.borman@windriver.com>
Signed-off-by: Bruce Ashfield <bruce.ashfield@windriver.com>
Signed-off-by: Paul Gortmaker <paul.gortmaker@windriver.com>
Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
Diffstat (limited to 'drivers')
0 files changed, 0 insertions, 0 deletions