Date: Tue, 22 Apr 2003 15:12:35 -0700 (PDT) From: Peter Wemm <peter@FreeBSD.org> To: Perforce Change Reviews <perforce@freebsd.org> Subject: PERFORCE change 29462 for review Message-ID: <200304222212.h3MMCZJQ038658@repoman.freebsd.org>
next in thread | raw e-mail | index | archive | help
http://perforce.freebsd.org/chv.cgi?CH=29462 Change 29462 by peter@peter_daintree on 2003/04/22 15:12:19 The bastards! My evil hack to offset the f*cked up internal alignment of the tss struct (what the hell were they thinking??) appears to be what was stopping me getting into user mode. Oh well, CR4_AC (alignment checking) is off, so lets just give in for now. Affected files ... .. //depot/projects/hammer/sys/x86_64/include/tss.h#8 edit Differences ... ==== //depot/projects/hammer/sys/x86_64/include/tss.h#8 (text+ko) ==== @@ -47,39 +47,29 @@ * fields. It might be worth trying to set the tss on a +4 byte offset to * make the 64 bit fields aligned in practice. */ -#pragma pack(1) struct x86_64tss { u_int32_t tss_rsvd0; - u_int64_t tss_rsp0; /* kernel stack pointer ring 0 */ - u_int64_t tss_rsp1; /* kernel stack pointer ring 1 */ - u_int64_t tss_rsp2; /* kernel stack pointer ring 2 */ + u_int64_t tss_rsp0 __packed; /* kernel stack pointer ring 0 */ + u_int64_t tss_rsp1 __packed; /* kernel stack pointer ring 1 */ + u_int64_t tss_rsp2 __packed; /* kernel stack pointer ring 2 */ u_int32_t tss_rsvd1; u_int32_t tss_rsvd2; u_int32_t tss_rsvd3; - u_int64_t tss_ist1; /* Interrupt stack table 1 */ - u_int64_t tss_ist2; /* Interrupt stack table 2 */ - u_int64_t tss_ist3; /* Interrupt stack table 3 */ - u_int64_t tss_ist4; /* Interrupt stack table 4 */ - u_int64_t tss_ist5; /* Interrupt stack table 5 */ - u_int64_t tss_ist6; /* Interrupt stack table 6 */ - u_int64_t tss_ist7; /* Interrupt stack table 7 */ + u_int64_t tss_ist1 __packed; /* Interrupt stack table 1 */ + u_int64_t tss_ist2 __packed; /* Interrupt stack table 2 */ + u_int64_t tss_ist3 __packed; /* Interrupt stack table 3 */ + u_int64_t tss_ist4 __packed; /* Interrupt stack table 4 */ + u_int64_t tss_ist5 __packed; /* Interrupt stack table 5 */ + u_int64_t tss_ist6 __packed; /* Interrupt stack table 6 */ + u_int64_t tss_ist7 __packed; /* Interrupt stack table 7 */ u_int32_t tss_rsvd4; u_int32_t tss_rsvd5; u_int16_t tss_rsvd6; u_int16_t tss_iobase; /* io bitmap offset */ }; -#pragma pack() #ifdef _KERNEL -/* - * Nasty hack to arrange internal alignment. - * What were they thinking?? - */ -struct aligned_tss { - u_int32_t pad; - struct x86_64tss tss __packed; -}; -extern struct aligned_tss common_tss; +extern struct x86_64tss common_tss; #endif #endif /* _MACHINE_TSS_H_ */
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200304222212.h3MMCZJQ038658>