* mips: Added support for unaligned load/store. It greatly improves performance and prevents bus errors on systems which do not emulate unaligned memory access.

git-svn-id: trunk@45871 -
This commit is contained in:
yury 2020-07-28 20:08:41 +00:00
parent 55c4986c8d
commit cc936710a0

View File

@ -465,6 +465,12 @@ var
begin
if (TCGSize2Size[fromsize] < TCGSize2Size[tosize]) then
a_load_reg_reg(list,fromsize,tosize,reg,reg);
if (ref.alignment<>0) and
(ref.alignment<tcgsize2size[tosize]) then
begin
a_load_reg_ref_unaligned(list,FromSize,ToSize,reg,ref);
exit;
end;
case tosize of
OS_8,
OS_S8:
@ -491,6 +497,12 @@ var
begin
if (TCGSize2Size[fromsize] >= TCGSize2Size[tosize]) then
fromsize := tosize;
if (ref.alignment<>0) and
(ref.alignment<tcgsize2size[fromsize]) then
begin
a_load_ref_reg_unaligned(list,FromSize,ToSize,ref,reg);
exit;
end;
case fromsize of
OS_S8:
Op := A_LB;{Load Signed Byte}