Browse Source

- disabled assembler implementations for darwin/i386 because they don't
work on i386 targets that require a 16-byte aligned stack

git-svn-id: trunk@23045 -

Jonas Maebe 12 years ago
parent
commit
631fa329e5
1 changed files with 10 additions and 0 deletions
  1. 10 0
      packages/hermes/src/hermes.pp

+ 10 - 0
packages/hermes/src/hermes.pp

@@ -34,6 +34,16 @@ unit Hermes;
 
 
 {$MODE objfpc}
 {$MODE objfpc}
 
 
+{$if defined(darwin) and defined(cpui386)}
+{ darwin/i386 requires a 16 byte aligned stack, and inserts code for that on
+  entry in assembler routines (unless they are declared with "nostackframe").
+  These assembler routines manually create their own stack frame and hardcode
+  parameter offsets without using nostackframe, so they can never work on
+  Darwin.
+}
+{$define noassembler}
+{$endif}
+
 {$IF defined(cpui386) and not defined(noassembler)}
 {$IF defined(cpui386) and not defined(noassembler)}
   {$IF defined(linux) or defined(win32) or defined(go32v2) or defined(freebsd) or defined(haiku) or defined(beos)}
   {$IF defined(linux) or defined(win32) or defined(go32v2) or defined(freebsd) or defined(haiku) or defined(beos)}
     {$DEFINE I386_ASSEMBLER}
     {$DEFINE I386_ASSEMBLER}