Explorar o código

* endian fixes

Jonas Maebe %!s(int64=22) %!d(string=hai) anos
pai
achega
f85bec0291
Modificáronse 1 ficheiros con 19 adicións e 17 borrados
  1. 19 17
      compiler/ppu.pas

+ 19 - 17
compiler/ppu.pas

@@ -242,6 +242,7 @@ implementation
 {$ifdef Test_Double_checksum}
     comphook,
 {$endif def Test_Double_checksum}
+    systems,
     crc;
 
 {*****************************************************************************
@@ -718,22 +719,20 @@ begin
   { update size (w/o header!) in the header }
   header.size:=bufstart-sizeof(tppuheader);
   { set the endian flag }
-{$IFDEF SOURCE_BIG_ENDIAN}
-  header.flags := header.flags or uf_big_endian;
-{$ENDIF}
-{$IFDEF SOURCE_LITTLE_ENDIAN}
-  header.flags := header.flags or uf_little_endian;
-{$ENDIF}
-  { Now swap the header in the correct endian (always little endian) }
-{$IFDEF SOURCE_BIG_ENDIAN}
-  header.compiler := SwapWord(header.compiler);
-  header.cpu := SwapWord(header.cpu);
-  header.target := SwapWord(header.target);
-  header.flags := SwapLong(header.flags);
-  header.size := SwapLong(header.size);
-  header.checksum := SwapLong(header.checksum);
-  header.interface_checksum := SwapLong(header.interface_checksum);
-{$ENDIF}
+  if source_info.endian = endian_little then
+    header.flags := header.flags or uf_little_endian
+  else
+    begin
+      header.flags := header.flags or uf_big_endian;
+      { Now swap the header in the correct endian (always little endian) }
+      header.compiler := SwapWord(header.compiler);
+      header.cpu := SwapWord(header.cpu);
+      header.target := SwapWord(header.target);
+      header.flags := SwapLong(header.flags);
+      header.size := SwapLong(header.size);
+      header.checksum := SwapLong(header.checksum);
+      header.interface_checksum := SwapLong(header.interface_checksum);
+    end;
 { write header and restore filepos after it }
   opos:=filepos(f);
   seek(f,0);
@@ -986,7 +985,10 @@ end;
 end.
 {
   $Log$
-  Revision 1.35  2003-05-23 17:03:51  peter
+  Revision 1.36  2003-05-24 13:37:10  jonas
+    * endian fixes
+
+  Revision 1.35  2003/05/23 17:03:51  peter
     * write header for crc_only
 
   Revision 1.34  2003/04/25 20:59:34  peter