From e205481027f142c3195a4eab38377b4b7afb584f Mon Sep 17 00:00:00 2001
From: Jonas Maebe <jonas@freepascal.org>
Date: Wed, 8 Aug 2007 09:48:37 +0000
Subject: [PATCH]   * fixed sparc bootstrap   * use -Av9 assembler option so it
 accepts the memory barrier opcodes

git-svn-id: trunk@8244 -
---
 compiler/options.pas      | 1 +
 compiler/sparc/cpugas.pas | 2 +-
 rtl/sparc/sparc.inc       | 6 ++++++
 3 files changed, 8 insertions(+), 1 deletion(-)

diff --git a/compiler/options.pas b/compiler/options.pas
index 747cec779b..f0dbdd27f6 100644
--- a/compiler/options.pas
+++ b/compiler/options.pas
@@ -2049,6 +2049,7 @@ begin
 {$ifdef powerpc64}
   def_system_macro('FPC_HAS_LWSYNC');
 {$endif}
+  def_system_macro('FPC_HAS_MEMBAR');
 
 {$if defined(x86) or defined(arm)}
   def_system_macro('INTERNAL_BACKTRACE');
diff --git a/compiler/sparc/cpugas.pas b/compiler/sparc/cpugas.pas
index a094d40302..3132ae6626 100644
--- a/compiler/sparc/cpugas.pas
+++ b/compiler/sparc/cpugas.pas
@@ -224,7 +224,7 @@ implementation
            id     : as_ggas;
            idtxt  : 'GAS';
            asmbin : 'gas';
-           asmcmd : '-o $OBJ $ASM';
+           asmcmd : '-Av9 -o $OBJ $ASM';
            supported_target : system_any;
            flags : [af_allowdirect,af_needar,af_smartlink_sections];
            labelprefix : '.L';
diff --git a/rtl/sparc/sparc.inc b/rtl/sparc/sparc.inc
index f4d6fb7981..c89c5f7fd7 100644
--- a/rtl/sparc/sparc.inc
+++ b/rtl/sparc/sparc.inc
@@ -522,9 +522,11 @@ const
 
 procedure ReadBarrier;assembler;nostackframe;{$ifdef SYSTEMINLINE}inline;{$endif}
 asm
+{$ifdef FPC_HAS_MEMBAR}
   ba,pt .L1
   membar LoadLoad
 .L1:
+{$endif}
 end;
 
 procedure ReadDependencyBarrier;{$ifdef SYSTEMINLINE}inline;{$endif}
@@ -534,16 +536,20 @@ end;
 
 procedure ReadWriteBarrier;assembler;nostackframe;{$ifdef SYSTEMINLINE}inline;{$endif}
 asm
+{$ifdef FPC_HAS_MEMBAR}
   ba,pt .L1
   membar LoadLoad + LoadStore + StoreLoad + StoreStore
 .L1:
+{$endif}
 end;
 
 procedure WriteBarrier;assembler;nostackframe;{$ifdef SYSTEMINLINE}inline;{$endif}
 asm
+{$ifdef FPC_HAS_MEMBAR}
   ba,pt .L1
   stbar
 .L1:
+{$endif}
 end;
 
 {$endif}