diff -rNupb mstflint.orig/flint.cpp mstflint/flint.cpp
--- ./mstflint.orig/flint.cpp	2006-11-19 15:45:22.000000000 +0200
+++ ./mstflint/flint.cpp	2006-11-19 17:18:43.000000000 +0200
@@ -4634,9 +4634,19 @@ bool Operations::patchVSD(FImage& f, 
     // Form new VSD
 
     if (user_psid) {
+#if __BYTE_ORDER == __BIG_ENDIAN
+    char ppc64_psid[PSID_LEN];
+
+    for (int k=0 ; k < PSID_LEN ; k++)
+        ppc64_psid[k] = image_psid[(k/4)*4 + (3-k%4)];
+#define IMAGE_PSID ppc64_psid 
+#else
+#define IMAGE_PSID image_psid
+#endif
+
         // New psid is explicitly given - take it from user
         printf("\n    You are about to replace current PSID in the image file - \"%s\" with a different PSID - \"%s\".\n"
-               "    Note: It is highly recommended not to change the image PSID.\n", user_psid, image_psid);
+               "    Note: It is highly recommended not to change the image PSID.\n", user_psid, IMAGE_PSID );
 
         if (! ask_user())
             return false;
@@ -4648,12 +4658,21 @@ bool Operations::patchVSD(FImage& f, 
         vsd_to_use = user_vsd;
     }
 
+#if __BYTE_ORDER == __BIG_ENDIAN
+    char ppc64_psid[PSID_LEN];
 
-    if (curr_psid && strncmp( psid_to_use, (char*) curr_psid, PSID_LEN)) {
+    for (int k=0 ; k < PSID_LEN ; k++)
+        ppc64_psid[k] = image_psid[(k/4)*4 + (3-k%4)];
+#define CURR_PSID  ppc64_psid
+#else
+#define CURR_PSID  curr_psid
+#endif
+
+    if (CURR_PSID && strncmp( psid_to_use, (char*) CURR_PSID, PSID_LEN)) {
         printf("\n    You are about to replace current PSID on flash - \"%s\" with a different PSID - \"%s\".\n"
 
                "    Note: It is highly recommended not to change the PSID.\n",
-	       curr_psid, psid_to_use);
+	       CURR_PSID, psid_to_use);
 
         if (! ask_user())
             return false;
@@ -4982,6 +5001,19 @@ bool Operations::ParseInfoSect(u_int8_t*
 
 bool Operations::DisplayImageInfo(Operations::ImageInfo* info) {
 
+#if __BYTE_ORDER == __BIG_ENDIAN
+    char ppc64_vsd[sizeof(info->vsd)];
+    char ppc64_psid[sizeof(info->psid)];
+
+    for (int k=0 ; k < (int)sizeof(info->vsd) ; k++)
+	ppc64_vsd[k] = ((char *)info->vsd)[(k/4)*4 + (3-k%4)];
+    strncpy(info->vsd, ppc64_vsd, sizeof(info->vsd) );  
+
+    for (int k=0 ; k < sizeof(info->psid) ; k++)
+        ppc64_psid[k] = ((char *)info->psid)[(k/4)*4 + (3-k%4)];
+    strncpy(info->psid, ppc64_psid, sizeof(info->psid) );  
+#endif
+
     report("Image type:      %s\n", info->isFailsafe ? "Failsafe" : "Short");
 
     if (info->infoFound[II_FwVersion]) {

