-extern mach_trap_t mach_trap_table[];
-extern int mach_trap_count;
-extern kern_return_t kern_invalid(void);
+extern const mach_trap_t mach_trap_table[];
+extern int mach_trap_count;
+
+#if CONFIG_REQUIRES_U32_MUNGING || (__arm__ && (__BIGGEST_ALIGNMENT__ > 4))
+
+#if !MACH_ASSERT
+#define MACH_TRAP(name, arg_count, u32_arg_words, munge32) \
+ { (arg_count), (kern_return_t (*)(void *)) (name), munge32, (u32_arg_words) }
+#else /* !MACH_ASSERT */
+#define MACH_TRAP(name, arg_count, u32_arg_words, munge32) \
+ { (arg_count), (kern_return_t (*)(void *)) (name), munge32, (u32_arg_words), #name }
+#endif /* !MACH_ASSERT */
+
+
+#else /* !CONFIG_REQUIRES_U32_MUNGING || (__arm__ && (__BIGGEST_ALIGNMENT__ > 4)) */