mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-10-19 17:51:58 +02:00
* Reverted r17343, and IFDEF'ed out the newer assembler procedures for FreeBSD for now. They require fixes to assembler writer, and after it's done they still have to be disabled during bootstrapping.
git-svn-id: trunk@17347 -
This commit is contained in:
parent
1ef1dbf671
commit
576250bc5b
@ -72,6 +72,12 @@ asm
|
||||
.Lg_a_null:
|
||||
end ['RAX'];
|
||||
|
||||
// The following assembler procedures are disabled for FreeBSD due to
|
||||
// multiple issues with its old GNU assembler (Mantis #19188).
|
||||
// Even after fixing them, it can be enabled only for the trunk version,
|
||||
// otherwise bootstrapping won't be possible.
|
||||
{$ifndef freebsd}
|
||||
|
||||
{$ifndef FPC_SYSTEM_HAS_MOVE}
|
||||
{$define FPC_SYSTEM_HAS_MOVE}
|
||||
procedure Move(const source;var dest;count:SizeInt);[public, alias: 'FPC_MOVE'];assembler;nostackframe;
|
||||
@ -195,23 +201,23 @@ asm
|
||||
add $64, %rdx
|
||||
mov -64(%rcx,%rdx,1), %r9
|
||||
mov -56(%rcx,%rdx,1), %r10
|
||||
movntiq %r9, -64(%rdx)
|
||||
movntiq %r10, -56(%rdx)
|
||||
movnti %r9, -64(%rdx)
|
||||
movnti %r10, -56(%rdx)
|
||||
|
||||
mov -48(%rcx,%rdx,1), %r9
|
||||
mov -40(%rcx,%rdx,1), %r10
|
||||
movntiq %r9, -48(%rdx)
|
||||
movntiq %r10, -40(%rdx)
|
||||
movnti %r9, -48(%rdx)
|
||||
movnti %r10, -40(%rdx)
|
||||
dec %eax
|
||||
mov -32(%rcx,%rdx,1), %r9
|
||||
mov -24(%rcx,%rdx,1), %r10
|
||||
movntiq %r9, -32(%rdx)
|
||||
movntiq %r10, -24(%rdx)
|
||||
movnti %r9, -32(%rdx)
|
||||
movnti %r10, -24(%rdx)
|
||||
|
||||
mov -16(%rcx,%rdx,1), %r9
|
||||
mov -8(%rcx,%rdx,1), %r10
|
||||
movntiq %r9, -16(%rdx)
|
||||
movntiq %r10, -8(%rdx)
|
||||
movnti %r9, -16(%rdx)
|
||||
movnti %r10, -8(%rdx)
|
||||
jne .Loop64
|
||||
|
||||
sub $0x1000, %r8
|
||||
@ -323,23 +329,23 @@ asm
|
||||
sub $64, %rdx
|
||||
mov 56(%rcx,%rdx,1), %r9
|
||||
mov 48(%rcx,%rdx,1), %r10
|
||||
movntiq %r9, 56(%rdx)
|
||||
movntiq %r10, 48(%rdx)
|
||||
movnti %r9, 56(%rdx)
|
||||
movnti %r10, 48(%rdx)
|
||||
|
||||
mov 40(%rcx,%rdx,1), %r9
|
||||
mov 32(%rcx,%rdx,1), %r10
|
||||
movntiq %r9, 40(%rdx)
|
||||
movntiq %r10, 32(%rdx)
|
||||
movnti %r9, 40(%rdx)
|
||||
movnti %r10, 32(%rdx)
|
||||
dec %eax
|
||||
mov 24(%rcx,%rdx,1), %r9
|
||||
mov 16(%rcx,%rdx,1), %r10
|
||||
movntiq %r9, 24(%rdx)
|
||||
movntiq %r10, 16(%rdx)
|
||||
movnti %r9, 24(%rdx)
|
||||
movnti %r10, 16(%rdx)
|
||||
|
||||
mov 8(%rcx,%rdx,1), %r9
|
||||
mov (%rcx,%rdx,1), %r10
|
||||
movntiq %r9, 8(%rdx)
|
||||
movntiq %r10, (%rdx)
|
||||
movnti %r9, 8(%rdx)
|
||||
movnti %r10, (%rdx)
|
||||
jne .Lloop64b
|
||||
|
||||
sub $0x1000, %r8
|
||||
@ -451,15 +457,15 @@ Procedure FillChar(var x;count:SizeInt;value:byte);assembler;nostackframe;
|
||||
.balign 16
|
||||
.Lloop64nti:
|
||||
add $64, %rcx
|
||||
movntiq %r8, -64(%rcx)
|
||||
movntiq %r8, -56(%rcx)
|
||||
movntiq %r8, -48(%rcx)
|
||||
movntiq %r8, -40(%rcx)
|
||||
movnti %r8, -64(%rcx)
|
||||
movnti %r8, -56(%rcx)
|
||||
movnti %r8, -48(%rcx)
|
||||
movnti %r8, -40(%rcx)
|
||||
dec %rax
|
||||
movntiq %r8, -32(%rcx)
|
||||
movntiq %r8, -24(%rcx)
|
||||
movntiq %r8, -16(%rcx)
|
||||
movntiq %r8, -8(%rcx)
|
||||
movnti %r8, -32(%rcx)
|
||||
movnti %r8, -24(%rcx)
|
||||
movnti %r8, -16(%rcx)
|
||||
movnti %r8, -8(%rcx)
|
||||
jnz .Lloop64nti
|
||||
mfence
|
||||
jmp .Lless64
|
||||
@ -627,6 +633,8 @@ asm
|
||||
end;
|
||||
{$endif FPC_SYSTEM_HAS_INDEXWORD}
|
||||
|
||||
{$endif freebsd}
|
||||
|
||||
{$asmmode att}
|
||||
{$define FPC_SYSTEM_HAS_DECLOCKED_LONGINT}
|
||||
{ does a thread save inc/dec }
|
||||
|
Loading…
Reference in New Issue
Block a user