Browse Source

* endian fixes

Jonas Maebe 22 years ago
parent
commit
f85bec0291
1 changed files with 19 additions and 17 deletions
  1. 19 17
      compiler/ppu.pas

+ 19 - 17
compiler/ppu.pas

@@ -242,6 +242,7 @@ implementation
 {$ifdef Test_Double_checksum}
 {$ifdef Test_Double_checksum}
     comphook,
     comphook,
 {$endif def Test_Double_checksum}
 {$endif def Test_Double_checksum}
+    systems,
     crc;
     crc;
 
 
 {*****************************************************************************
 {*****************************************************************************
@@ -718,22 +719,20 @@ begin
   { update size (w/o header!) in the header }
   { update size (w/o header!) in the header }
   header.size:=bufstart-sizeof(tppuheader);
   header.size:=bufstart-sizeof(tppuheader);
   { set the endian flag }
   { 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 }
 { write header and restore filepos after it }
   opos:=filepos(f);
   opos:=filepos(f);
   seek(f,0);
   seek(f,0);
@@ -986,7 +985,10 @@ end;
 end.
 end.
 {
 {
   $Log$
   $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
     * write header for crc_only
 
 
   Revision 1.34  2003/04/25 20:59:34  peter
   Revision 1.34  2003/04/25 20:59:34  peter