my $data = shift;
$code.=<<___;
- ldr $MaskQ, .Lsbox_magic
- ldr $TAHMatQ, .Lsbox_magic+16
- ldr $TALMatQ, .Lsbox_magic+32
- ldr $ATAHMatQ, .Lsbox_magic+48
- ldr $ATALMatQ, .Lsbox_magic+64
- ldr $ANDMaskQ, .Lsbox_magic+80
+ adrp $xtmp2, .Lsbox_magic
+ ldr $MaskQ, [$xtmp2, #:lo12:.Lsbox_magic]
+ ldr $TAHMatQ, [$xtmp2, #:lo12:.Lsbox_magic+16]
+ ldr $TALMatQ, [$xtmp2, #:lo12:.Lsbox_magic+32]
+ ldr $ATAHMatQ, [$xtmp2, #:lo12:.Lsbox_magic+48]
+ ldr $ATALMatQ, [$xtmp2, #:lo12:.Lsbox_magic+64]
+ ldr $ANDMaskQ, [$xtmp2, #:lo12:.Lsbox_magic+80]
___
}
my $std = shift;
&rbit(@vtmp[2],$src,$std);
$code.=<<___;
- ldr @qtmp[0], .Lxts_magic
+ adrp $xtmp2, .Lxts_magic
+ ldr @qtmp[0], [$xtmp2, #:lo12:.Lxts_magic]
shl $des.16b, @vtmp[2].16b, #1
ext @vtmp[1].16b, @vtmp[2].16b, @vtmp[2].16b,#15
ushr @vtmp[1].16b, @vtmp[1].16b, #7
&load_sbox();
&rev32($vkey,$vkey);
$code.=<<___;
- adr $pointer,.Lshuffles
+ adrp $pointer,.Lshuffles
+ add $pointer,$pointer,#:lo12:.Lshuffles
ld1 {$vmap.2d},[$pointer]
- adr $pointer,.Lfk
+ adrp $pointer,.Lfk
+ add $pointer,$pointer,#:lo12:.Lfk
ld1 {$vfk.2d},[$pointer]
eor $vkey.16b,$vkey.16b,$vfk.16b
mov $schedules,#32
- adr $pointer,.Lck
+ adrp $pointer,.Lck
+ add $pointer,$pointer,#:lo12:.Lck
movi @vtmp[0].16b,#64
cbnz $enc,1f
add $keys,$keys,124