+2020-11-12  Nick Clifton  <nickc@redhat.com>
+
+       * m32r-sim.h (m32rbf_h_accum_get_handler): Always provide a
+       prototype for this function.
+       (m32rbf_h_accum_set_handler): Likewise.
+       (m32r2f_h_accums_get_handler): Prototype.
+       (m32r2f_h_accums_set_handler): Prototype.
+
 2020-09-18  Andrew Burgess  <andrew.burgess@embecosm.com>
 
        * m32r.c (m32rbf_register_size): New function.
 
   XCONCAT2 (WANT_CPU,_h_psw_set_handler) (current_cpu, (val))
 #endif
 
-#ifndef  GET_H_ACCUM
+/* FIXME: These prototypes are necessary because the cgen generated
+   cpu.h, cpux.h and cpu2.h headers do not provide them, and functions
+   which take or return parameters that are larger than an int must be
+   prototyed in order for them to work correctly.
+
+   The correct solution is to fix the code in cgen/sim.scm to generate
+   prototypes for each of the functions it generates.  */
 extern DI   m32rbf_h_accum_get_handler (SIM_CPU *);
 extern void m32rbf_h_accum_set_handler (SIM_CPU *, DI);
+extern DI   m32r2f_h_accums_get_handler (SIM_CPU *, UINT);
+extern void m32r2f_h_accums_set_handler (SIM_CPU *, UINT, DI);
 
+#ifndef  GET_H_ACCUM
 #define GET_H_ACCUM() \
   XCONCAT2 (WANT_CPU,_h_accum_get_handler) (current_cpu)
 #define SET_H_ACCUM(val) \