#include "acpi.h" // struct rsdp_descriptor
#include "config.h" // CONFIG_*
#include "malloc.h" // malloc_fseg
-#include "mptable.h" // MPTABLE_SIGNATURE
#include "output.h" // dprintf
+#include "std/mptable.h" // MPTABLE_SIGNATURE
#include "std/pirtable.h" // struct pir_header
#include "std/smbios.h" // struct smbios_entry_point
#include "string.h" // memcpy
#include "hw/pci.h"
#include "hw/pci_regs.h"
#include "malloc.h" // free
-#include "mptable.h" // MPTABLE_SIGNATURE
#include "output.h" // dprintf
#include "romfile.h" // romfile_loadint
+#include "std/mptable.h" // MPTABLE_SIGNATURE
#include "string.h" // memset
#include "util.h" // MaxCountCPUs
#include "x86.h" // cpuid
+++ /dev/null
-#ifndef __MPTABLE_H
-#define __MPTABLE_H
-
-#include "types.h" // u32
-
-#define MPTABLE_SIGNATURE 0x5f504d5f // "_MP_"
-
-struct mptable_floating_s {
- u32 signature;
- u32 physaddr;
- u8 length;
- u8 spec_rev;
- u8 checksum;
- u8 feature1;
- u8 feature2;
- u8 reserved[3];
-};
-
-#define MPCONFIG_SIGNATURE 0x504d4350 // "PCMP"
-
-struct mptable_config_s {
- u32 signature;
- u16 length;
- u8 spec;
- u8 checksum;
- char oemid[8];
- char productid[12];
- u32 oemptr;
- u16 oemsize;
- u16 entrycount;
- u32 lapic;
- u16 exttable_length;
- u8 exttable_checksum;
- u8 reserved;
-} PACKED;
-
-#define MPT_TYPE_CPU 0
-#define MPT_TYPE_BUS 1
-#define MPT_TYPE_IOAPIC 2
-#define MPT_TYPE_INTSRC 3
-#define MPT_TYPE_LOCAL_INT 4
-
-struct mpt_cpu {
- u8 type;
- u8 apicid;
- u8 apicver;
- u8 cpuflag;
- u32 cpusignature;
- u32 featureflag;
- u32 reserved[2];
-} PACKED;
-
-struct mpt_bus {
- u8 type;
- u8 busid;
- char bustype[6];
-} PACKED;
-
-struct mpt_ioapic {
- u8 type;
- u8 apicid;
- u8 apicver;
- u8 flags;
- u32 apicaddr;
-} PACKED;
-
-struct mpt_intsrc {
- u8 type;
- u8 irqtype;
- u16 irqflag;
- u8 srcbus;
- u8 srcbusirq;
- u8 dstapic;
- u8 dstirq;
-} PACKED;
-
-// mptable.c
-void mptable_setup(void);
-
-#endif // mptable.h
#include "ioport.h" // outw
#include "malloc.h" // malloc_tmp
#include "memmap.h" // add_e820
-#include "mptable.h" // mptable_setup
#include "output.h" // dprintf
#include "paravirt.h" // qemu_cfg_preinit
#include "romfile.h" // romfile_loadint
--- /dev/null
+#ifndef __MPTABLE_H
+#define __MPTABLE_H
+
+#include "types.h" // u32
+
+#define MPTABLE_SIGNATURE 0x5f504d5f // "_MP_"
+
+struct mptable_floating_s {
+ u32 signature;
+ u32 physaddr;
+ u8 length;
+ u8 spec_rev;
+ u8 checksum;
+ u8 feature1;
+ u8 feature2;
+ u8 reserved[3];
+};
+
+#define MPCONFIG_SIGNATURE 0x504d4350 // "PCMP"
+
+struct mptable_config_s {
+ u32 signature;
+ u16 length;
+ u8 spec;
+ u8 checksum;
+ char oemid[8];
+ char productid[12];
+ u32 oemptr;
+ u16 oemsize;
+ u16 entrycount;
+ u32 lapic;
+ u16 exttable_length;
+ u8 exttable_checksum;
+ u8 reserved;
+} PACKED;
+
+#define MPT_TYPE_CPU 0
+#define MPT_TYPE_BUS 1
+#define MPT_TYPE_IOAPIC 2
+#define MPT_TYPE_INTSRC 3
+#define MPT_TYPE_LOCAL_INT 4
+
+struct mpt_cpu {
+ u8 type;
+ u8 apicid;
+ u8 apicver;
+ u8 cpuflag;
+ u32 cpusignature;
+ u32 featureflag;
+ u32 reserved[2];
+} PACKED;
+
+struct mpt_bus {
+ u8 type;
+ u8 busid;
+ char bustype[6];
+} PACKED;
+
+struct mpt_ioapic {
+ u8 type;
+ u8 apicid;
+ u8 apicver;
+ u8 flags;
+ u32 apicaddr;
+} PACKED;
+
+struct mpt_intsrc {
+ u8 type;
+ u8 irqtype;
+ u16 irqflag;
+ u8 srcbus;
+ u8 srcbusirq;
+ u8 dstapic;
+ u8 dstirq;
+} PACKED;
+
+#endif // mptable.h
int csm_bootprio_ata(struct pci_device *pci, int chanid, int slave);
int csm_bootprio_pci(struct pci_device *pci);
+// fw/mptable.c
+void mptable_setup(void);
+
// fw/shadow.c
void make_bios_writable(void);
void make_bios_readonly(void);