#undef _LINUX_CONFIG_H
 #define _LINUX_CONFIG_H 1      /* avoid reading Linux autoconf.h file  */
 
+#ifndef __ASSEMBLY__           /* put C only stuff in this section */
+
 typedef unsigned char          uchar;
 typedef volatile unsigned long vu_long;
 typedef volatile unsigned short vu_short;
 #ifdef CONFIG_BLACKFIN
 #include <asm/blackfin.h>
 #endif
+#ifdef CONFIG_STATUS_LED
+#include <status_led.h>
+#endif
 
 #include <part.h>
 #include <flash.h>
 /*
  * STDIO based functions (can always be used)
  */
-
 /* serial stuff */
 void   serial_printf (const char *fmt, ...)
                __attribute__ ((format (__printf__, 1, 2)));
-
 /* stdin */
 int    getc(void);
 int    tstc(void);
 /*
  * FILE based functions (can only be used AFTER relocation!)
  */
-
 #define stdin          0
 #define stdout         1
 #define stderr         2
 
 int    pcmcia_init (void);
 
-#ifdef CONFIG_STATUS_LED
-# include <status_led.h>
-#endif
 /*
  * Board-specific Platform code can reimplement show_boot_progress () if needed
  */
 void show_boot_progress(int val);
 
+/* Multicore arch functions */
+#ifdef CONFIG_MP
+int cpu_status(int nr);
+int cpu_reset(int nr);
+int cpu_release(int nr, int argc, char *argv[]);
+#endif
+
+#endif /* __ASSEMBLY__ */
+
+/* Put only stuff here that the assembler can digest */
+
+#ifdef CONFIG_POST
+#define CONFIG_HAS_POST
+#endif
+
 #ifdef CONFIG_INIT_CRITICAL
 #error CONFIG_INIT_CRITICAL is deprecated!
 #error Read section CONFIG_SKIP_LOWLEVEL_INIT in README.
 #define ALIGN(x,a)             __ALIGN_MASK((x),(typeof(x))(a)-1)
 #define __ALIGN_MASK(x,mask)   (((x)+(mask))&~(mask))
 
-/* Multicore arch functions */
-#ifdef CONFIG_MP
-int cpu_status(int nr);
-int cpu_reset(int nr);
-int cpu_release(int nr, int argc, char *argv[]);
-#endif
-
-#ifdef CONFIG_POST
-#define CONFIG_HAS_POST
-#endif
-
 #endif /* __COMMON_H_ */