Fixes sparc compilation error
authorBarret Rhoden <brho@cs.berkeley.edu>
Mon, 6 Jun 2011 23:17:32 +0000 (16:17 -0700)
committerKevin Klues <klueska@cs.berkeley.edu>
Thu, 3 Nov 2011 00:36:04 +0000 (17:36 -0700)
Sparc doesn't like our new fields in the kernel messages.  We'll 8-byte
align them from now on.  If you change the size of a kernel message, be
sure to update k/a/s/trap.h.

kern/arch/sparc/trap.h
kern/include/trap.h

index ac98bcc..89b8bf8 100644 (file)
@@ -2,7 +2,7 @@
 #define ROS_INC_ARCH_TRAP_H
 
 #define SIZEOF_TRAPFRAME_T     0xA8
-#define SIZEOF_KERNEL_MESSAGE_T        0x18
+#define SIZEOF_KERNEL_MESSAGE_T        0x20
 
 #ifndef __ASSEMBLER__
 
index 1d8fc2f..5ba3b9a 100644 (file)
@@ -78,6 +78,7 @@ void kernel_msg_init(void);
 typedef void (*amr_t)(trapframe_t* tf, uint32_t srcid,
                       TV(a0t) a0, TV(a1t) a1, TV(a2t) a2);
 
+/* Must stay 8-byte aligned for sparc */
 struct kernel_message
 {
        STAILQ_ENTRY(kernel_message NTPTV(a0t) NTPTV(a1t) NTPTV(a2t))
@@ -88,7 +89,8 @@ struct kernel_message
        TV(a0t) arg0;
        TV(a1t) arg1;
        TV(a2t) arg2;
-};
+}__attribute__((aligned(8)));
+
 STAILQ_HEAD(kernel_msg_list, kernel_message NTPTV(a0t) NTPTV(a1t) NTPTV(a2t));
 typedef struct kernel_message NTPTV(a0t) NTPTV(a1t) NTPTV(a2t) kernel_message_t;