xref: /minix/minix/fs/mfs/utility.c (revision 83133719)
1 #include "fs.h"
2 #include "buf.h"
3 #include "inode.h"
4 #include "super.h"
5 
6 
7 /*===========================================================================*
8  *				conv2					     *
9  *===========================================================================*/
10 unsigned conv2(norm, w)
11 int norm;			/* TRUE if no swap, FALSE for byte swap */
12 int w;				/* promotion of 16-bit word to be swapped */
13 {
14 /* Possibly swap a 16-bit word between 8086 and 68000 byte order. */
15   if (norm) return( (unsigned) w & 0xFFFF);
16   return( ((w&BYTE) << 8) | ( (w>>8) & BYTE));
17 }
18 
19 
20 /*===========================================================================*
21  *				conv4					     *
22  *===========================================================================*/
23 long conv4(norm, x)
24 int norm;			/* TRUE if no swap, FALSE for byte swap */
25 long x;				/* 32-bit long to be byte swapped */
26 {
27 /* Possibly swap a 32-bit long between 8086 and 68000 byte order. */
28   unsigned lo, hi;
29   long l;
30 
31   if (norm) return(x);			/* byte order was already ok */
32   lo = conv2(FALSE, (int) x & 0xFFFF);	/* low-order half, byte swapped */
33   hi = conv2(FALSE, (int) (x>>16) & 0xFFFF);	/* high-order half, swapped */
34   l = ( (long) lo <<16) | hi;
35   return(l);
36 }
37