diff --git a/apps/plugins/doom/i_video.c b/apps/plugins/doom/i_video.c
index e7f8e90..7758ca3 100644
--- a/apps/plugins/doom/i_video.c
+++ b/apps/plugins/doom/i_video.c
@@ -435,7 +435,7 @@ static inline unsigned int read_scroll_wheel(void)
 }
 #endif
 
-inline void getkey()
+static inline void getkey()
 {
    event_t event;
    /* Same button handling as rockboy */
@@ -609,7 +609,7 @@ inline void getkey()
    }
 }
 
-inline void I_StartTic (void)
+void I_StartTic (void)
 {
    getkey();
 }
diff --git a/apps/plugins/lib/buflib.h b/apps/plugins/lib/buflib.h
index d4ef4af..47ad57f 100644
--- a/apps/plugins/lib/buflib.h
+++ b/apps/plugins/lib/buflib.h
@@ -51,12 +51,7 @@ void buflib_buffer_in(struct buflib_context *ctx, int size);
 
 
 
-/* always_inline is due to this not getting inlined when not optimizing, which
- * leads to an unresolved reference since it doesn't exist as a non-inline
- * function
- */
-extern inline __attribute__((always_inline))
-void* buflib_get_data(struct buflib_context *context, int handle)
+static inline void* buflib_get_data(struct buflib_context *context, int handle)
 {
     return (void*)(context->handle_table[-handle].ptr);
 }
diff --git a/apps/plugins/midi/sequencer.c b/apps/plugins/midi/sequencer.c
index 307643e..be26fdd 100644
--- a/apps/plugins/midi/sequencer.c
+++ b/apps/plugins/midi/sequencer.c
@@ -186,7 +186,7 @@ static inline void setPW(int ch, int msb, int lsb)
     computeDeltas(ch);
 }
 
-inline void pressNote(int ch, int note, int vol)
+static inline void pressNote(int ch, int note, int vol)
 {
     static int lastKill = 0;
 /* Silences all channels but one, for easy debugging, for me. */
diff --git a/apps/plugins/pitch_detector.c b/apps/plugins/pitch_detector.c
index 2b80f5c..8528451 100644
--- a/apps/plugins/pitch_detector.c
+++ b/apps/plugins/pitch_detector.c
@@ -70,43 +70,37 @@
 
 
 /* Some fixed point calculation stuff */
-typedef int32_t fixed_data;
-struct _fixed
-{
-    fixed_data a;
-};
-typedef struct _fixed fixed;
+typedef int32_t fixed;
 #define FIXED_PRECISION 18
 #define FP_MAX ((fixed) {0x7fffffff})
 #define FP_MIN ((fixed) {-0x80000000})
-#define int2fixed(x)    ((fixed){(x) << FIXED_PRECISION})
-#define int2mantissa(x) ((fixed){x})
-#define fixed2int(x)    ((int)((x).a >> FIXED_PRECISION))
-#define fixed2float(x)  (((float)(x).a) / ((float)(1 << FIXED_PRECISION)))
-#define float2fixed(x) \
-    ((fixed){(fixed_data)(x * (float)(1 << FIXED_PRECISION))})
+#define int2fixed(x)    ((fixed)(x) << FIXED_PRECISION)
+#define int2mantissa(x) ((fixed)(x))
+#define fixed2int(x)    ((int)((x) >> FIXED_PRECISION))
+#define fixed2float(x)  (((float)(x)) / ((float)(1 << FIXED_PRECISION)))
+#define float2fixed(x) ((fixed)(x * (float)(1 << FIXED_PRECISION)))
 /* I adapted these ones from the Rockbox fixed point library */
 #define fp_mul(x, y) \
-    ((fixed){(((int64_t)((x).a)) * ((int64_t)((y).a))) >> (FIXED_PRECISION)})
+    ((fixed){(((int64_t)((x))) * ((int64_t)((y)))) >> (FIXED_PRECISION)})
 #define fp_div(x, y) \
-    ((fixed){(((int64_t)((x).a)) << (FIXED_PRECISION)) / ((int64_t)((y).a))})
+    ((fixed){(((int64_t)((x))) << (FIXED_PRECISION)) / ((int64_t)((y)))})
 /* Operators for fixed point */
-#define fp_add(x, y) ((fixed){(x).a + (y).a})
-#define fp_sub(x, y) ((fixed){(x).a - (y).a})
-#define fp_shl(x, y) ((fixed){(x).a << y})
-#define fp_shr(x, y) ((fixed){(x).a >> y})
-#define fp_neg(x)    ((fixed){-(x).a})
-#define fp_gt(x, y)  ((x).a > (y).a)
-#define fp_gte(x, y) ((x).a >= (y).a)
-#define fp_lt(x, y)  ((x).a < (y).a)
-#define fp_lte(x, y) ((x).a <= (y).a)
+#define fp_add(x, y) ((fixed){(x) + (y)})
+#define fp_sub(x, y) ((fixed){(x) - (y)})
+#define fp_shl(x, y) ((fixed){(x) << y})
+#define fp_shr(x, y) ((fixed){(x) >> y})
+#define fp_neg(x)    ((fixed){-(x)})
+#define fp_gt(x, y)  ((x) > (y))
+#define fp_gte(x, y) ((x) >= (y))
+#define fp_lt(x, y)  ((x) < (y))
+#define fp_lte(x, y) ((x) <= (y))
 #define fp_sqr(x)    fp_mul((x), (x))
-#define fp_equal(x, y) ((x).a == (y).a)
+#define fp_equal(x, y) ((x) == (y))
 #define fp_round(x)  (fixed2int(fp_add((x), float2fixed(0.5))))
-#define fp_data(x)   ((x).a)
+#define fp_data(x)   (x)
 #define fp_frac(x)   (fp_sub((x), int2fixed(fixed2int(x))))
-#define FP_ZERO      ((fixed){0})
-#define FP_LOW       ((fixed){2})
+#define FP_ZERO      ((fixed)0)
+#define FP_LOW       ((fixed)2)
 
 /* Some defines for converting between period and frequency  */
 
diff --git a/apps/plugins/rockboy/rockmacros.h b/apps/plugins/rockboy/rockmacros.h
index e7f79a5..f68a613 100644
--- a/apps/plugins/rockboy/rockmacros.h
+++ b/apps/plugins/rockboy/rockmacros.h
@@ -30,7 +30,7 @@ void *my_malloc(size_t size);
 
 extern int shut,cleanshut;
 void vid_init(void);
-inline void vid_begin(void);
+void vid_begin(void);
 void die(char *message, ...);
 void doevents(void) ICODE_ATTR;
 void ev_poll(void);
diff --git a/apps/plugins/rockboy/sys_rockbox.c b/apps/plugins/rockboy/sys_rockbox.c
index bf4c513..7148c8c 100644
--- a/apps/plugins/rockboy/sys_rockbox.c
+++ b/apps/plugins/rockboy/sys_rockbox.c
@@ -192,7 +192,7 @@ void ev_poll(void)
 }
 
 /* New frameskip, makes more sense to me and performs as well */
-inline void vid_begin(void)
+void vid_begin(void)
 {
     static int skip = 0;
     if (skip<options.frameskip)
diff --git a/tools/configure b/tools/configure
index 5d6d63a..902dab7 100755
--- a/tools/configure
+++ b/tools/configure
@@ -9,7 +9,7 @@
 #
 
 # global CC options for all platforms
-CCOPTS="-W -Wall -Wundef -O -nostdlib -ffreestanding -Wstrict-prototypes -pipe"
+CCOPTS="-W -Wall -Wundef -O -nostdlib -ffreestanding -Wstrict-prototypes -pipe -std=gnu99"
 
 # global LD options for all platforms
 GLOBAL_LDOPTS=""
