Fix the processor table entry structure to use a fixed-width type for

32-bit fields so it is the correct size on amd64.  Remove a workaround
for the broken structure from bhyve(8).

MFC after:	1 week
This commit is contained in:
John Baldwin 2013-12-05 21:51:54 +00:00
parent 43fdca95b6
commit c71f0d951a
Notes: svn2git 2020-12-20 02:59:44 +00:00
svn path=/head/; revision=259013
2 changed files with 7 additions and 20 deletions

View File

@ -85,10 +85,10 @@ typedef struct PROCENTRY {
u_char apic_id;
u_char apic_version;
u_char cpu_flags;
u_long cpu_signature;
u_long feature_flags;
u_long reserved1;
u_long reserved2;
u_int32_t cpu_signature;
u_int32_t feature_flags;
u_int32_t reserved1;
u_int32_t reserved2;
} *proc_entry_ptr;
#define PROCENTRY_FLAG_EN 0x01

View File

@ -74,19 +74,6 @@ __FBSDID("$FreeBSD$");
/* Number of i/o intr entries */
#define MPEII_MAX_IRQ 24
/* Define processor entry struct since <x86/mptable.h> gets it wrong */
typedef struct BPROCENTRY {
u_char type;
u_char apic_id;
u_char apic_version;
u_char cpu_flags;
uint32_t cpu_signature;
uint32_t feature_flags;
uint32_t reserved1;
uint32_t reserved2;
} *bproc_entry_ptr;
CTASSERT(sizeof(struct BPROCENTRY) == 20);
/* Bus entry defines */
#define MPE_NUM_BUSES 2
#define MPE_BUSNAME_LEN 6
@ -134,7 +121,7 @@ mpt_build_mpch(mpcth_t mpch)
}
static void
mpt_build_proc_entries(bproc_entry_ptr mpep, int ncpu)
mpt_build_proc_entries(proc_entry_ptr mpep, int ncpu)
{
int i;
@ -247,7 +234,7 @@ mptable_build(struct vmctx *ctx, int ncpu)
mpcth_t mpch;
bus_entry_ptr mpeb;
io_apic_entry_ptr mpei;
bproc_entry_ptr mpep;
proc_entry_ptr mpep;
mpfps_t mpfp;
int_entry_ptr mpie;
char *curraddr;
@ -268,7 +255,7 @@ mptable_build(struct vmctx *ctx, int ncpu)
mpt_build_mpch(mpch);
curraddr += sizeof(*mpch);
mpep = (bproc_entry_ptr)curraddr;
mpep = (proc_entry_ptr)curraddr;
mpt_build_proc_entries(mpep, ncpu);
curraddr += sizeof(*mpep) * ncpu;
mpch->entry_count += ncpu;