Skip to contentSkip to conversation

fix various compiler warnings

PATCH Superseded Jan Kiszka 2 participants 3 messages Jun 23, 2008 – Jul 16, 2008

lore
Share & tools
lore

Jan Kiszka

author
#0 lore raw

PATCH 1/1 fix various compiler warnings

This belongs into the category "mostly harmless", but it is still annoying when you change core headers and look out for build regressions. Some spots still remain (namely in slirp), but it is a start. Please cross-check if all the silencing is actually valid and not papering over a real issue (but it doesn't appear to me)!

---
 hw/pc.c                           |    7 ++++---
 hw/sh7750.c                       |    4 ++--
 linux-user/arm/nwfpe/fpa11_cpdt.c |   16 ++++++++--------
 linux-user/flatload.c             |    6 +++---
 linux-user/m68k-sim.c             |   12 ++++++------
 linux-user/signal.c               |    6 +++---
 linux-user/syscall.c              |    1 +
 target-i386/helper.c              |    6 +++---
 target-mips/op_helper.c           |    4 ++--
 target-sparc/cpu.h                |    2 ++
 10 files changed, 34 insertions(+), 30 deletions(-)
hw/sh7750.c +2 -2
Index: b/hw/sh7750.c
===================================================================
@@ -182,13 +182,13 @@ static void portb_changed(SH7750State * 
 
 static void error_access(const char *kind, target_phys_addr_t addr)
 {
-    fprintf(stderr, "%s to %s (0x%08x) not supported\n",
+    fprintf(stderr, "%s to %s (0x" TARGET_FMT_plx ") not supported\n",
 	    kind, regname(addr), addr);
 }
 
 static void ignore_access(const char *kind, target_phys_addr_t addr)
 {
-    fprintf(stderr, "%s to %s (0x%08x) ignored\n",
+    fprintf(stderr, "%s to %s (0x" TARGET_FMT_plx ") ignored\n",
 	    kind, regname(addr), addr);
 }
 
linux-user/flatload.c +3 -3
Index: b/linux-user/flatload.c
===================================================================
@@ -349,9 +349,9 @@ void old_reloc(struct lib_info *libinfo,
         reloc_type = rl >> 30;
         /* ??? How to handle this?  */
 #if defined(CONFIG_COLDFIRE)
-	ptr = (uint32_t *) (libinfo->start_code + offset);
+	ptr = (uint32_t *)(unsigned long) (libinfo->start_code + offset);
 #else
-	ptr = (uint32_t *) (libinfo->start_data + offset);
+	ptr = (uint32_t *)(unsigned long) (libinfo->start_data + offset);
 #endif
 
 #ifdef DEBUG
@@ -670,7 +670,7 @@ static int load_flat_file(struct linux_b
     }
 
     /* zero the BSS.  */
-    memset((void*)(datapos + data_len), 0, bss_len);
+    memset((void *)(unsigned long)(datapos + data_len), 0, bss_len);
 
     return 0;
 }
linux-user/m68k-sim.c +6 -6
Index: b/linux-user/m68k-sim.c
===================================================================
@@ -101,19 +101,19 @@ void do_m68k_simcall(CPUM68KState *env, 
 {
     uint32_t *args;
 
-    args = (uint32_t *)(env->aregs[7] + 4);
+    args = (uint32_t *)(unsigned long)(env->aregs[7] + 4);
     switch (nr) {
     case SYS_EXIT:
         exit(ARG(0));
     case SYS_READ:
-        check_err(env, read(ARG(0), (void *)ARG(1), ARG(2)));
+        check_err(env, read(ARG(0), (void *)(unsigned long)ARG(1), ARG(2)));
         break;
     case SYS_WRITE:
-        check_err(env, write(ARG(0), (void *)ARG(1), ARG(2)));
+        check_err(env, write(ARG(0), (void *)(unsigned long)ARG(1), ARG(2)));
         break;
     case SYS_OPEN:
-        check_err(env, open((char *)ARG(0), translate_openflags(ARG(1)),
-                            ARG(2)));
+        check_err(env, open((char *)(unsigned long)ARG(0),
+                            translate_openflags(ARG(1)), ARG(2)));
         break;
     case SYS_CLOSE:
         {
@@ -142,7 +142,7 @@ void do_m68k_simcall(CPUM68KState *env, 
             struct m86k_sim_stat *p;
             rc = check_err(env, fstat(ARG(0), &s));
             if (rc == 0) {
-                p = (struct m86k_sim_stat *)ARG(1);
+                p = (struct m86k_sim_stat *)(unsigned long)ARG(1);
                 p->sim_st_dev = tswap16(s.st_dev);
                 p->sim_st_ino = tswap16(s.st_ino);
                 p->sim_st_mode = tswap32(s.st_mode);
linux-user/syscall.c +1 -0
Index: b/linux-user/syscall.c
===================================================================
@@ -72,6 +72,7 @@
 #include "linux_loop.h"
 
 #include "qemu.h"
+#include "qemu-common.h"
 
 #if defined(USE_NPTL)
 #include <linux/futex.h>
target-sparc/cpu.h +2 -0
Index: b/target-sparc/cpu.h
===================================================================
@@ -366,12 +366,14 @@ static inline int cpu_cwp_dec(CPUSPARCSt
     } while (0)
 #define GET_CWP64(env) (env->nwindows - 1 - (env)->cwp)
 
+#ifndef NO_CPU_IO_DEFS
 static inline void PUT_CWP64(CPUSPARCState *env1, int cwp)
 {
     if (unlikely(cwp >= env1->nwindows || cwp < 0))
         cwp = 0;
     cpu_set_cwp(env1, env1->nwindows - 1 - cwp);
 }
+#endif
 
 #endif
 
linux-user/signal.c +3 -3
Index: b/linux-user/signal.c
===================================================================
@@ -2755,7 +2755,7 @@ static void setup_rt_frame(int sig, stru
     /* Create the ucontext.  */
     err |= __put_user(0, &frame->uc.uc_flags);
     err |= __put_user(0, (unsigned long *)&frame->uc.uc_link);
-    err |= __put_user((void *)target_sigaltstack_used.ss_sp,
+    err |= __put_user((unsigned long)target_sigaltstack_used.ss_sp,
 		      &frame->uc.uc_stack.ss_sp);
     err |= __put_user(sas_ss_flags(regs->gregs[15]),
 		      &frame->uc.uc_stack.ss_flags);
@@ -2982,11 +2982,11 @@ static void setup_frame(int sig, struct 
 	setup_sigcontext(&frame->sc, env);
 
 	/* Move the stack and setup the arguments for the handler.  */
-	env->regs[R_SP] = (uint32_t) frame;
+	env->regs[R_SP] = (uint32_t)(unsigned long) frame;
 	env->regs[10] = sig;
 	env->pc = (unsigned long) ka->_sa_handler;
 	/* Link SRP so the guest returns through the trampoline.  */
-	env->pregs[PR_SRP] = (uint32_t) &frame->retcode[0];
+	env->pregs[PR_SRP] = (uint32_t)(unsigned long) &frame->retcode[0];
 
 	unlock_user_struct(frame, frame_addr, 1);
 	return;
linux-user/arm/nwfpe/fpa11_cpdt.c +8 -8
Index: b/linux-user/arm/nwfpe/fpa11_cpdt.c
===================================================================
@@ -227,7 +227,7 @@ unsigned int PerformLDF(const unsigned i
 
    //printk("PerformLDF(0x%08x), Fd = 0x%08x\n",opcode,getFd(opcode));
 
-   pBase = (unsigned int*)readRegister(getRn(opcode));
+   pBase = (unsigned int *)(unsigned long)readRegister(getRn(opcode));
    if (REG_PC == getRn(opcode))
    {
      pBase += 2;
@@ -250,7 +250,7 @@ unsigned int PerformLDF(const unsigned i
       default: nRc = 0;
    }
 
-   if (write_back) writeRegister(getRn(opcode),(unsigned int)pFinal);
+   if (write_back) writeRegister(getRn(opcode), (unsigned long)pFinal);
    return nRc;
 }
 
@@ -262,7 +262,7 @@ unsigned int PerformSTF(const unsigned i
    //printk("PerformSTF(0x%08x), Fd = 0x%08x\n",opcode,getFd(opcode));
    SetRoundingMode(ROUND_TO_NEAREST);
 
-   pBase = (unsigned int*)readRegister(getRn(opcode));
+   pBase = (unsigned int *)(unsigned long)readRegister(getRn(opcode));
    if (REG_PC == getRn(opcode))
    {
      pBase += 2;
@@ -285,7 +285,7 @@ unsigned int PerformSTF(const unsigned i
       default: nRc = 0;
    }
 
-   if (write_back) writeRegister(getRn(opcode),(unsigned int)pFinal);
+   if (write_back) writeRegister(getRn(opcode),(unsigned long)pFinal);
    return nRc;
 }
 
@@ -294,7 +294,7 @@ unsigned int PerformLFM(const unsigned i
    unsigned int i, Fd, *pBase, *pAddress, *pFinal,
      write_back = WRITE_BACK(opcode);
 
-   pBase = (unsigned int*)readRegister(getRn(opcode));
+   pBase = (unsigned int *)(unsigned long)readRegister(getRn(opcode));
    if (REG_PC == getRn(opcode))
    {
      pBase += 2;
@@ -317,7 +317,7 @@ unsigned int PerformLFM(const unsigned i
      if (Fd == 8) Fd = 0;
    }
 
-   if (write_back) writeRegister(getRn(opcode),(unsigned int)pFinal);
+   if (write_back) writeRegister(getRn(opcode), (unsigned long)pFinal);
    return 1;
 }
 
@@ -326,7 +326,7 @@ unsigned int PerformSFM(const unsigned i
    unsigned int i, Fd, *pBase, *pAddress, *pFinal,
      write_back = WRITE_BACK(opcode);
 
-   pBase = (unsigned int*)readRegister(getRn(opcode));
+   pBase = (unsigned int *)(unsigned long)readRegister(getRn(opcode));
    if (REG_PC == getRn(opcode))
    {
      pBase += 2;
@@ -349,7 +349,7 @@ unsigned int PerformSFM(const unsigned i
      if (Fd == 8) Fd = 0;
    }
 
-   if (write_back) writeRegister(getRn(opcode),(unsigned int)pFinal);
+   if (write_back) writeRegister(getRn(opcode), (unsigned long)pFinal);
    return 1;
 }
 
target-mips/op_helper.c +2 -2
Index: b/target-mips/op_helper.c
===================================================================
@@ -461,7 +461,7 @@ void do_ldl(int mem_idx)
 #ifdef CONFIG_USER_ONLY
 #define ldfun ldub_raw
 #else
-    target_ulong (*ldfun)(target_ulong);
+    int (*ldfun)(target_ulong);
 
     switch (mem_idx)
     {
@@ -517,7 +517,7 @@ void do_ldr(int mem_idx)
 #ifdef CONFIG_USER_ONLY
 #define ldfun ldub_raw
 #else
-    target_ulong (*ldfun)(target_ulong);
+    int (*ldfun)(target_ulong);
 
     switch (mem_idx)
     {
hw/pc.c +4 -3
Index: b/hw/pc.c
===================================================================
@@ -607,8 +607,8 @@ static void load_linux(const char *kerne
 	initrd_size = get_file_size(fi);
 	initrd_addr = (initrd_max-initrd_size) & ~4095;
 
-	fprintf(stderr, "qemu: loading initrd (%#x bytes) at %#zx\n",
-		initrd_size, initrd_addr);
+	fprintf(stderr, "qemu: loading initrd (%#x bytes) at " TARGET_FMT_plx
+		"\n", initrd_size, initrd_addr);
 
 	if (!fread_targphys_ok(initrd_addr, initrd_size, fi)) {
 	    fprintf(stderr, "qemu: read error on initial ram disk '%s'\n",
@@ -779,7 +779,8 @@ static void pc_init1(ram_addr_t ram_size
 
     /* above 4giga memory allocation */
     if (above_4g_mem_size > 0) {
-        cpu_register_physical_memory(0x100000000ULL, above_4g_mem_size,
+        cpu_register_physical_memory((target_phys_addr_t)0x100000000ULL,
+                                     above_4g_mem_size,
                                      ram_addr + below_4g_mem_size);
     }
 
target-i386/helper.c +3 -3
Index: b/target-i386/helper.c
===================================================================
@@ -827,12 +827,12 @@ target_phys_addr_t cpu_get_phys_page_deb
 /* XXX: This value should match the one returned by CPUID
  * and in exec.c */
 #if defined(USE_KQEMU)
-#define PHYS_ADDR_MASK 0xfffff000L
+#define PHYS_ADDR_MASK 0xfffff000LL
 #else
 # if defined(TARGET_X86_64)
-# define PHYS_ADDR_MASK 0xfffffff000L
+# define PHYS_ADDR_MASK 0xfffffff000LL
 # else
-# define PHYS_ADDR_MASK 0xffffff000L
+# define PHYS_ADDR_MASK 0xffffff000LL
 # endif
 #endif
 
author
#1 lore raw

PATCH RESEND 1/1 fix various compiler warnings

Here are those bits from the original patch which are still unfixed. Please apply what fits, fix differently where required or desired, or let me know how you would like to see it being addressed.

---
 hw/pc.c                           |    7 ++++---
 hw/sh7750.c                       |    4 ++--
 linux-user/arm/nwfpe/fpa11_cpdt.c |   16 ++++++++--------
 linux-user/flatload.c             |    6 +++---
 linux-user/m68k-sim.c             |   12 ++++++------
 linux-user/signal.c               |    6 +++---
 linux-user/syscall.c              |    1 +
 target-arm/translate.c            |    2 ++
 target-i386/helper.c              |    6 +++---
 9 files changed, 32 insertions(+), 28 deletions(-)
hw/sh7750.c +2 -2
Index: b/hw/sh7750.c
===================================================================
@@ -182,13 +182,13 @@ static void portb_changed(SH7750State *
 
 static void error_access(const char *kind, target_phys_addr_t addr)
 {
-    fprintf(stderr, "%s to %s (0x%08x) not supported\n",
+    fprintf(stderr, "%s to %s (0x" TARGET_FMT_plx ") not supported\n",
 	    kind, regname(addr), addr);
 }
 
 static void ignore_access(const char *kind, target_phys_addr_t addr)
 {
-    fprintf(stderr, "%s to %s (0x%08x) ignored\n",
+    fprintf(stderr, "%s to %s (0x" TARGET_FMT_plx ") ignored\n",
 	    kind, regname(addr), addr);
 }
 
linux-user/flatload.c +3 -3
Index: b/linux-user/flatload.c
===================================================================
@@ -349,9 +349,9 @@ void old_reloc(struct lib_info *libinfo,
         reloc_type = rl >> 30;
         /* ??? How to handle this?  */
 #if defined(CONFIG_COLDFIRE)
-	ptr = (uint32_t *) (libinfo->start_code + offset);
+	ptr = (uint32_t *)(unsigned long) (libinfo->start_code + offset);
 #else
-	ptr = (uint32_t *) (libinfo->start_data + offset);
+	ptr = (uint32_t *)(unsigned long) (libinfo->start_data + offset);
 #endif
 
 #ifdef DEBUG
@@ -670,7 +670,7 @@ static int load_flat_file(struct linux_b
     }
 
     /* zero the BSS.  */
-    memset((void*)(datapos + data_len), 0, bss_len);
+    memset((void *)(unsigned long)(datapos + data_len), 0, bss_len);
 
     return 0;
 }
linux-user/m68k-sim.c +6 -6
Index: b/linux-user/m68k-sim.c
===================================================================
@@ -101,19 +101,19 @@ void do_m68k_simcall(CPUM68KState *env,
 {
     uint32_t *args;
 
-    args = (uint32_t *)(env->aregs[7] + 4);
+    args = (uint32_t *)(unsigned long)(env->aregs[7] + 4);
     switch (nr) {
     case SYS_EXIT:
         exit(ARG(0));
     case SYS_READ:
-        check_err(env, read(ARG(0), (void *)ARG(1), ARG(2)));
+        check_err(env, read(ARG(0), (void *)(unsigned long)ARG(1), ARG(2)));
         break;
     case SYS_WRITE:
-        check_err(env, write(ARG(0), (void *)ARG(1), ARG(2)));
+        check_err(env, write(ARG(0), (void *)(unsigned long)ARG(1), ARG(2)));
         break;
     case SYS_OPEN:
-        check_err(env, open((char *)ARG(0), translate_openflags(ARG(1)),
-                            ARG(2)));
+        check_err(env, open((char *)(unsigned long)ARG(0),
+                            translate_openflags(ARG(1)), ARG(2)));
         break;
     case SYS_CLOSE:
         {
@@ -142,7 +142,7 @@ void do_m68k_simcall(CPUM68KState *env,
             struct m86k_sim_stat *p;
             rc = check_err(env, fstat(ARG(0), &s));
             if (rc == 0) {
-                p = (struct m86k_sim_stat *)ARG(1);
+                p = (struct m86k_sim_stat *)(unsigned long)ARG(1);
                 p->sim_st_dev = tswap16(s.st_dev);
                 p->sim_st_ino = tswap16(s.st_ino);
                 p->sim_st_mode = tswap32(s.st_mode);
linux-user/syscall.c +1 -0
Index: b/linux-user/syscall.c
===================================================================
@@ -72,6 +72,7 @@
 #include "linux_loop.h"
 
 #include "qemu.h"
+#include "qemu-common.h"
 
 #if defined(USE_NPTL)
 #include <linux/futex.h>
linux-user/signal.c +3 -3
Index: b/linux-user/signal.c
===================================================================
@@ -2755,7 +2755,7 @@ static void setup_rt_frame(int sig, stru
     /* Create the ucontext.  */
     err |= __put_user(0, &frame->uc.uc_flags);
     err |= __put_user(0, (unsigned long *)&frame->uc.uc_link);
-    err |= __put_user((void *)target_sigaltstack_used.ss_sp,
+    err |= __put_user((unsigned long)target_sigaltstack_used.ss_sp,
 		      &frame->uc.uc_stack.ss_sp);
     err |= __put_user(sas_ss_flags(regs->gregs[15]),
 		      &frame->uc.uc_stack.ss_flags);
@@ -2982,11 +2982,11 @@ static void setup_frame(int sig, struct
 	setup_sigcontext(&frame->sc, env);
 
 	/* Move the stack and setup the arguments for the handler.  */
-	env->regs[R_SP] = (uint32_t) frame;
+	env->regs[R_SP] = (uint32_t)(unsigned long) frame;
 	env->regs[10] = sig;
 	env->pc = (unsigned long) ka->_sa_handler;
 	/* Link SRP so the guest returns through the trampoline.  */
-	env->pregs[PR_SRP] = (uint32_t) &frame->retcode[0];
+	env->pregs[PR_SRP] = (uint32_t)(unsigned long) &frame->retcode[0];
 
 	unlock_user_struct(frame, frame_addr, 1);
 	return;
linux-user/arm/nwfpe/fpa11_cpdt.c +8 -8
Index: b/linux-user/arm/nwfpe/fpa11_cpdt.c
===================================================================
@@ -227,7 +227,7 @@ unsigned int PerformLDF(const unsigned i
 
    //printk("PerformLDF(0x%08x), Fd = 0x%08x\n",opcode,getFd(opcode));
 
-   pBase = (unsigned int*)readRegister(getRn(opcode));
+   pBase = (unsigned int *)(unsigned long)readRegister(getRn(opcode));
    if (REG_PC == getRn(opcode))
    {
      pBase += 2;
@@ -250,7 +250,7 @@ unsigned int PerformLDF(const unsigned i
       default: nRc = 0;
    }
 
-   if (write_back) writeRegister(getRn(opcode),(unsigned int)pFinal);
+   if (write_back) writeRegister(getRn(opcode), (unsigned long)pFinal);
    return nRc;
 }
 
@@ -262,7 +262,7 @@ unsigned int PerformSTF(const unsigned i
    //printk("PerformSTF(0x%08x), Fd = 0x%08x\n",opcode,getFd(opcode));
    SetRoundingMode(ROUND_TO_NEAREST);
 
-   pBase = (unsigned int*)readRegister(getRn(opcode));
+   pBase = (unsigned int *)(unsigned long)readRegister(getRn(opcode));
    if (REG_PC == getRn(opcode))
    {
      pBase += 2;
@@ -285,7 +285,7 @@ unsigned int PerformSTF(const unsigned i
       default: nRc = 0;
    }
 
-   if (write_back) writeRegister(getRn(opcode),(unsigned int)pFinal);
+   if (write_back) writeRegister(getRn(opcode),(unsigned long)pFinal);
    return nRc;
 }
 
@@ -294,7 +294,7 @@ unsigned int PerformLFM(const unsigned i
    unsigned int i, Fd, *pBase, *pAddress, *pFinal,
      write_back = WRITE_BACK(opcode);
 
-   pBase = (unsigned int*)readRegister(getRn(opcode));
+   pBase = (unsigned int *)(unsigned long)readRegister(getRn(opcode));
    if (REG_PC == getRn(opcode))
    {
      pBase += 2;
@@ -317,7 +317,7 @@ unsigned int PerformLFM(const unsigned i
      if (Fd == 8) Fd = 0;
    }
 
-   if (write_back) writeRegister(getRn(opcode),(unsigned int)pFinal);
+   if (write_back) writeRegister(getRn(opcode), (unsigned long)pFinal);
    return 1;
 }
 
@@ -326,7 +326,7 @@ unsigned int PerformSFM(const unsigned i
    unsigned int i, Fd, *pBase, *pAddress, *pFinal,
      write_back = WRITE_BACK(opcode);
 
-   pBase = (unsigned int*)readRegister(getRn(opcode));
+   pBase = (unsigned int *)(unsigned long)readRegister(getRn(opcode));
    if (REG_PC == getRn(opcode))
    {
      pBase += 2;
@@ -349,7 +349,7 @@ unsigned int PerformSFM(const unsigned i
      if (Fd == 8) Fd = 0;
    }
 
-   if (write_back) writeRegister(getRn(opcode),(unsigned int)pFinal);
+   if (write_back) writeRegister(getRn(opcode), (unsigned long)pFinal);
    return 1;
 }
 
hw/pc.c +4 -3
Index: b/hw/pc.c
===================================================================
@@ -607,8 +607,8 @@ static void load_linux(const char *kerne
 	initrd_size = get_file_size(fi);
 	initrd_addr = (initrd_max-initrd_size) & ~4095;
 
-	fprintf(stderr, "qemu: loading initrd (%#x bytes) at %#zx\n",
-		initrd_size, initrd_addr);
+	fprintf(stderr, "qemu: loading initrd (%#x bytes) at " TARGET_FMT_plx
+		"\n", initrd_size, initrd_addr);
 
 	if (!fread_targphys_ok(initrd_addr, initrd_size, fi)) {
 	    fprintf(stderr, "qemu: read error on initial ram disk '%s'\n",
@@ -778,7 +778,8 @@ static void pc_init1(ram_addr_t ram_size
 
     /* above 4giga memory allocation */
     if (above_4g_mem_size > 0) {
-        cpu_register_physical_memory(0x100000000ULL, above_4g_mem_size,
+        cpu_register_physical_memory((target_phys_addr_t)0x100000000ULL,
+                                     above_4g_mem_size,
                                      ram_addr + below_4g_mem_size);
     }
 
#2 lore raw

2008/7/13 Jan Kiszka <[email protected]>:

Quoted 3 lines

Here are those bits from the original patch which are still unfixed. Please apply what fits, fix differently where required or desired, or let me know how you would like to see it being addressed.

I applied this with small changes, please check because I already got these things wrong on occasions.

Quoted 68 lines

Index: b/linux-user/arm/nwfpe/fpa11_cpdt.c
===================================================================

linux-user/arm/nwfpe/fpa11_cpdt.c +7 -7
@@ -227,7 +227,7 @@ unsigned int PerformLDF(const unsigned i
 
   //printk("PerformLDF(0x%08x), Fd = 0x%08x\n",opcode,getFd(opcode));
 
-   pBase = (unsigned int*)readRegister(getRn(opcode));
+   pBase = (unsigned int *)(unsigned long)readRegister(getRn(opcode));
   if (REG_PC == getRn(opcode))
   {
     pBase += 2;
@@ -250,7 +250,7 @@ unsigned int PerformLDF(const unsigned i
      default: nRc = 0;
   }
 
-   if (write_back) writeRegister(getRn(opcode),(unsigned int)pFinal);
+   if (write_back) writeRegister(getRn(opcode), (unsigned long)pFinal);
   return nRc;
 }
 
@@ -262,7 +262,7 @@ unsigned int PerformSTF(const unsigned i
   //printk("PerformSTF(0x%08x), Fd = 0x%08x\n",opcode,getFd(opcode));
   SetRoundingMode(ROUND_TO_NEAREST);
 
-   pBase = (unsigned int*)readRegister(getRn(opcode));
+   pBase = (unsigned int *)(unsigned long)readRegister(getRn(opcode));
   if (REG_PC == getRn(opcode))
   {
     pBase += 2;
@@ -285,7 +285,7 @@ unsigned int PerformSTF(const unsigned i
      default: nRc = 0;
   }
 
-   if (write_back) writeRegister(getRn(opcode),(unsigned int)pFinal);
+   if (write_back) writeRegister(getRn(opcode),(unsigned long)pFinal);
   return nRc;
 }
 
@@ -294,7 +294,7 @@ unsigned int PerformLFM(const unsigned i
   unsigned int i, Fd, *pBase, *pAddress, *pFinal,
     write_back = WRITE_BACK(opcode);
 
-   pBase = (unsigned int*)readRegister(getRn(opcode));
+   pBase = (unsigned int *)(unsigned long)readRegister(getRn(opcode));
   if (REG_PC == getRn(opcode))
   {
     pBase += 2;
@@ -317,7 +317,7 @@ unsigned int PerformLFM(const unsigned i
     if (Fd == 8) Fd = 0;
   }
 
-   if (write_back) writeRegister(getRn(opcode),(unsigned int)pFinal);
+   if (write_back) writeRegister(getRn(opcode), (unsigned long)pFinal);
   return 1;
 }
 
@@ -326,7 +326,7 @@ unsigned int PerformSFM(const unsigned i
   unsigned int i, Fd, *pBase, *pAddress, *pFinal,
     write_back = WRITE_BACK(opcode);
 
-   pBase = (unsigned int*)readRegister(getRn(opcode));
+   pBase = (unsigned int *)(unsigned long)readRegister(getRn(opcode));
   if (REG_PC == getRn(opcode))
   {
     pBase += 2;

linux-user/arm/nwfpe/fpa11_cpdt.c unsigned int PerformSFM(const unsigned i · line 354

Quoted 7 lines
linux-user/arm/nwfpe/fpa11_cpdt.c +1 -1
@@ -349,7 +349,7 @@ unsigned int PerformSFM(const unsigned i
     if (Fd == 8) Fd = 0;
   }
 
-   if (write_back) writeRegister(getRn(opcode),(unsigned int)pFinal);
+   if (write_back) writeRegister(getRn(opcode), (unsigned long)pFinal);
   return 1;
 }

I skipped all these casts because these do seem to be papering over the real issue, perhaps pFinal and pBase shouldn't be pointers at all, but if the are, they should be uint32_t * as far as I can tell.

Regards