33 lines
871 B
Diff
33 lines
871 B
Diff
--- dosfsck/boot.c
|
|
+++ dosfsck/boot.c
|
|
@@ -8,6 +8,7 @@
|
|
#include <stdio.h>
|
|
#include <string.h>
|
|
#include <sys/types.h>
|
|
+#include <asm/unaligned.h>
|
|
|
|
#include "common.h"
|
|
#include "dosfsck.h"
|
|
@@ -35,18 +36,11 @@ static struct {
|
|
{ 0xff, "5.25\" 320k floppy 2s/40tr/8sec" },
|
|
};
|
|
|
|
-#if defined __alpha || defined __ia64__ || defined __s390x__ || defined __x86_64__ || defined __ppc64__
|
|
-/* Unaligned fields must first be copied byte-wise */
|
|
-#define GET_UNALIGNED_W(f) \
|
|
- ({ \
|
|
- unsigned short __v; \
|
|
- memcpy( &__v, &f, sizeof(__v) ); \
|
|
- CF_LE_W( *(unsigned short *)&f ); \
|
|
- })
|
|
-#else
|
|
-#define GET_UNALIGNED_W(f) CF_LE_W( *(unsigned short *)&f )
|
|
+#ifndef get_unaligned
|
|
+#define get_unaligned(ptr) (*(ptr))
|
|
#endif
|
|
|
|
+#define GET_UNALIGNED_W(f) CF_LE_W( get_unaligned ((unsigned short *)&f))
|
|
|
|
static char *get_media_descr( unsigned char media )
|
|
{
|