mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-08-19 22:30:36 +02:00
* fixes reference handling for arm thumb and ldrh, not perfect yet
git-svn-id: trunk@28568 -
This commit is contained in:
parent
604b277183
commit
8a7c16327c
@ -4074,8 +4074,19 @@ unit cgcpu;
|
|||||||
((op=A_LDRB) and (oppostfix=PF_None))) and
|
((op=A_LDRB) and (oppostfix=PF_None))) and
|
||||||
((ref.base=NR_STACK_POINTER_REG) or
|
((ref.base=NR_STACK_POINTER_REG) or
|
||||||
(ref.index=NR_STACK_POINTER_REG) or
|
(ref.index=NR_STACK_POINTER_REG) or
|
||||||
(abs(ref.offset)>31))
|
(abs(ref.offset)>31)
|
||||||
) then
|
)
|
||||||
|
) or
|
||||||
|
{ LDRH limitations }
|
||||||
|
(
|
||||||
|
(((op=A_LDR) and (oppostfix=PF_H)) or
|
||||||
|
((op=A_LDRH) and (oppostfix=PF_None))) and
|
||||||
|
((ref.base=NR_STACK_POINTER_REG) or
|
||||||
|
(ref.index=NR_STACK_POINTER_REG) or
|
||||||
|
(abs(ref.offset)>62) or
|
||||||
|
((abs(ref.offset) mod 2)<>0)
|
||||||
|
)
|
||||||
|
) then
|
||||||
begin
|
begin
|
||||||
tmpreg:=getintregister(list,OS_ADDR);
|
tmpreg:=getintregister(list,OS_ADDR);
|
||||||
a_loadaddr_ref_reg(list,ref,tmpreg);
|
a_loadaddr_ref_reg(list,ref,tmpreg);
|
||||||
|
Loading…
Reference in New Issue
Block a user