qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
* [Qemu-devel] Remove extern inline
@ 2005-03-02 13:57 Paul Brook
  0 siblings, 0 replies; only message in thread
From: Paul Brook @ 2005-03-02 13:57 UTC (permalink / raw)
  To: qemu-devel

[-- Attachment #1: Type: text/plain, Size: 574 bytes --]

"extern inline" is a particularly unintuitive bit of C syntax where the kernel 
and gcc developers disagreed on it's semantics. It was originally in the 
kernel used to guarantee that a particular routine is inlined. gcc not longer 
guarantees this, resulting in a compiler error if the routine is not inlined 
(eg. when compiling with -O0).

The attached patch changes the arm fpa11 emulation code to use "static inline" 
instead of "extern inline". The comments indicate that the code does not rely 
on inlining for correct behaviour, so this change should be safe.

Paul

[-- Attachment #2: patch.qemu_fpa_inline --]
[-- Type: text/x-diff, Size: 1910 bytes --]

? target-arm/p
? target-arm/nwfpe/p
Index: target-arm/nwfpe/ARM-gcc.h
===================================================================
RCS file: /cvsroot/qemu/qemu/target-arm/nwfpe/ARM-gcc.h,v
retrieving revision 1.1
diff -u -p -r1.1 ARM-gcc.h
--- target-arm/nwfpe/ARM-gcc.h	16 Feb 2004 21:43:58 -0000	1.1
+++ target-arm/nwfpe/ARM-gcc.h	2 Mar 2005 13:48:58 -0000
@@ -68,7 +68,7 @@ a compiler does not support explicit inl
 to be `static'.
 -------------------------------------------------------------------------------
 */
-#define INLINE extern __inline__
+#define INLINE static __inline__
 
 
 /* For use as a GCC soft-float library we need some special function names. */
Index: target-arm/nwfpe/fpa11.inl
===================================================================
RCS file: /cvsroot/qemu/qemu/target-arm/nwfpe/fpa11.inl,v
retrieving revision 1.1
diff -u -p -r1.1 fpa11.inl
--- target-arm/nwfpe/fpa11.inl	16 Feb 2004 21:43:58 -0000	1.1
+++ target-arm/nwfpe/fpa11.inl	2 Mar 2005 13:48:58 -0000
@@ -22,13 +22,13 @@
 #include "fpa11.h"
 
 /* Read and write floating point status register */
-extern __inline__ unsigned int readFPSR(void)
+INLINE unsigned int readFPSR(void)
 {
   FPA11 *fpa11 = GET_FPA11();
   return(fpa11->fpsr);
 }
 
-extern __inline__ void writeFPSR(FPSR reg)
+INLINE void writeFPSR(FPSR reg)
 {
   FPA11 *fpa11 = GET_FPA11();
   /* the sysid byte in the status register is readonly */
@@ -36,14 +36,14 @@ extern __inline__ void writeFPSR(FPSR re
 }
 
 /* Read and write floating point control register */
-extern __inline__ FPCR readFPCR(void)
+INLINE FPCR readFPCR(void)
 {
   FPA11 *fpa11 = GET_FPA11();
   /* clear SB, AB and DA bits before returning FPCR */
   return(fpa11->fpcr & ~MASK_RFC);
 }
 
-extern __inline__ void writeFPCR(FPCR reg)
+INLINE void writeFPCR(FPCR reg)
 {
   FPA11 *fpa11 = GET_FPA11();
   fpa11->fpcr &= ~MASK_WFC;		/* clear SB, AB and DA bits */

^ permalink raw reply	[flat|nested] only message in thread

only message in thread, other threads:[~2005-03-02 14:21 UTC | newest]

Thread overview: (only message) (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2005-03-02 13:57 [Qemu-devel] Remove extern inline Paul Brook

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).