Hide struct pcb definition by #ifdef __amd64__ braces. If cc -m32

compilation results in inclusion of the header, a confict arises due
to savefpu being union for i386, but used as struct in the pcb
definition.  The 32bit code should not need amd64 variant of the
struct pcb anyway.

For struct region_descriptor, use __uint64_t instead of unsigned long,
as the base type for bit-fields.  Unsigned long cannot have width 64
for -m32.

The changes allowed to use sys/sysctl.h for cc -m32.

Sponsored by:	The FreeBSD Foundation
MFC after:	1 week
This commit is contained in:
Konstantin Belousov 2013-11-26 19:38:42 +00:00
parent c6919e7fdc
commit 291bfc8d24
2 changed files with 4 additions and 2 deletions

View File

@ -43,6 +43,7 @@
#include <machine/fpu.h>
#include <machine/segments.h>
#ifdef __amd64__
struct pcb {
register_t pcb_r15;
register_t pcb_r14;
@ -105,6 +106,7 @@ struct pcb {
uint64_t pcb_pad[3];
};
#endif
#ifdef _KERNEL
struct trapframe;

View File

@ -82,8 +82,8 @@ struct soft_segment_descriptor {
* region descriptors, used to load gdt/idt tables before segments yet exist.
*/
struct region_descriptor {
unsigned long rd_limit:16; /* segment extent */
unsigned long rd_base:64 __packed; /* base address */
uint64_t rd_limit:16; /* segment extent */
uint64_t rd_base:64 __packed; /* base address */
} __packed;
#ifdef _KERNEL