added 4 changesets to branch 'refs/remotes/xyzzy-github/x86_64' old head: c3f0fd28cda13d70a8c092003609442e4e29cf78 new head: d38f1301d1e3f4c56f6350b40be3275ceff478ee ---------------------------------------------------------------------------- 98614a9: Merge branch 'master' into x86_64 6ba74ba: Fixed compilation of the boot loader on GCC 2. Not sure why but GCC 2 seems to be ignoring the extern "C" in smp.h when compiling smp_boot_other_cpus() resulting in undefined references. Fixed by putting extern "C" on the definition too. 5774b5a: C++ified remaining C users of arch_cpu.h. d38f130: Cleaned up 32-bit descriptors.h. [ Alex Smith <alex@xxxxxxxxxxxxxxxx> ] ---------------------------------------------------------------------------- 215 files changed, 901 insertions(+), 719 deletions(-) build/jam/OptionalBuildFeatures | 2 +- configure | 2 +- headers/private/kernel/arch/x86/32/descriptors.h | 25 +- src/add-ons/kernel/bus_managers/acpi/Jamfile | 24 +- .../bus_managers/acpi/{ => acpica}/common/adfile.c | 0 .../acpi/{ => acpica}/common/adisasm.c | 0 .../bus_managers/acpi/{ => acpica}/common/adwalk.c | 0 .../acpi/{ => acpica}/common/dmextern.c | 0 .../acpi/{ => acpica}/common/dmrestag.c | 0 .../acpi/{ => acpica}/common/dmtable.c | 0 .../acpi/{ => acpica}/common/dmtbdump.c | 0 .../acpi/{ => acpica}/common/dmtbinfo.c | 0 .../bus_managers/acpi/{ => acpica}/common/getopt.c | 0 .../{ => acpica/components}/dispatcher/dsargs.c | 0 .../{ => acpica/components}/dispatcher/dscontrol.c | 0 .../{ => acpica/components}/dispatcher/dsfield.c | 0 .../{ => acpica/components}/dispatcher/dsinit.c | 0 .../{ => acpica/components}/dispatcher/dsmethod.c | 0 .../{ => acpica/components}/dispatcher/dsmthdat.c | 0 .../{ => acpica/components}/dispatcher/dsobject.c | 0 .../{ => acpica/components}/dispatcher/dsopcode.c | 0 .../{ => acpica/components}/dispatcher/dsutils.c | 0 .../{ => acpica/components}/dispatcher/dswexec.c | 0 .../{ => acpica/components}/dispatcher/dswload.c | 0 .../{ => acpica/components}/dispatcher/dswload2.c | 0 .../{ => acpica/components}/dispatcher/dswscope.c | 0 .../{ => acpica/components}/dispatcher/dswstate.c | 0 .../acpi/{ => acpica/components}/events/evevent.c | 0 .../acpi/{ => acpica/components}/events/evglock.c | 0 .../acpi/{ => acpica/components}/events/evgpe.c | 0 .../acpi/{ => acpica/components}/events/evgpeblk.c | 0 .../{ => acpica/components}/events/evgpeinit.c | 0 .../{ => acpica/components}/events/evgpeutil.c | 0 .../acpi/{ => acpica/components}/events/evmisc.c | 0 .../acpi/{ => acpica/components}/events/evregion.c | 0 .../acpi/{ => acpica/components}/events/evrgnini.c | 0 .../acpi/{ => acpica/components}/events/evsci.c | 0 .../acpi/{ => acpica/components}/events/evxface.c | 0 .../acpi/{ => acpica/components}/events/evxfevnt.c | 0 .../acpi/{ => acpica/components}/events/evxfgpe.c | 0 .../acpi/{ => acpica/components}/events/evxfregn.c | 0 .../{ => acpica/components}/executer/exconfig.c | 0 .../{ => acpica/components}/executer/exconvrt.c | 0 .../{ => acpica/components}/executer/excreate.c | 0 .../{ => acpica/components}/executer/exdebug.c | 0 .../acpi/{ => acpica/components}/executer/exdump.c | 0 .../{ => acpica/components}/executer/exfield.c | 0 .../{ => acpica/components}/executer/exfldio.c | 0 .../acpi/{ => acpica/components}/executer/exmisc.c | 0 .../{ => acpica/components}/executer/exmutex.c | 0 .../{ => acpica/components}/executer/exnames.c | 0 .../{ => acpica/components}/executer/exoparg1.c | 0 .../{ => acpica/components}/executer/exoparg2.c | 0 .../{ => acpica/components}/executer/exoparg3.c | 0 .../{ => acpica/components}/executer/exoparg6.c | 0 .../acpi/{ => acpica/components}/executer/exprep.c | 0 .../{ => acpica/components}/executer/exregion.c | 0 .../{ => acpica/components}/executer/exresnte.c | 0 .../{ => acpica/components}/executer/exresolv.c | 0 .../{ => acpica/components}/executer/exresop.c | 0 .../{ => acpica/components}/executer/exstore.c | 0 .../{ => acpica/components}/executer/exstoren.c | 0 .../{ => acpica/components}/executer/exstorob.c | 0 .../{ => acpica/components}/executer/exsystem.c | 0 .../{ => acpica/components}/executer/exutils.c | 0 .../acpi/{ => acpica/components}/hardware/hwacpi.c | 0 .../acpi/{ => acpica/components}/hardware/hwgpe.c | 0 .../acpi/{ => acpica/components}/hardware/hwpci.c | 0 .../acpi/{ => acpica/components}/hardware/hwregs.c | 0 .../{ => acpica/components}/hardware/hwsleep.c | 0 .../{ => acpica/components}/hardware/hwtimer.c | 0 .../{ => acpica/components}/hardware/hwvalid.c | 0 .../{ => acpica/components}/hardware/hwxface.c | 0 .../{ => acpica/components}/namespace/nsaccess.c | 0 .../{ => acpica/components}/namespace/nsalloc.c | 0 .../{ => acpica/components}/namespace/nsdump.c | 0 .../{ => acpica/components}/namespace/nsdumpdv.c | 0 .../{ => acpica/components}/namespace/nseval.c | 0 .../{ => acpica/components}/namespace/nsinit.c | 0 .../{ => acpica/components}/namespace/nsload.c | 0 .../{ => acpica/components}/namespace/nsnames.c | 0 .../{ => acpica/components}/namespace/nsobject.c | 0 .../{ => acpica/components}/namespace/nsparse.c | 0 .../{ => acpica/components}/namespace/nspredef.c | 0 .../{ => acpica/components}/namespace/nsrepair.c | 0 .../{ => acpica/components}/namespace/nsrepair2.c | 0 .../{ => acpica/components}/namespace/nssearch.c | 0 .../{ => acpica/components}/namespace/nsutils.c | 0 .../{ => acpica/components}/namespace/nswalk.c | 0 .../{ => acpica/components}/namespace/nsxfeval.c | 0 .../{ => acpica/components}/namespace/nsxfname.c | 0 .../{ => acpica/components}/namespace/nsxfobj.c | 0 .../acpi/{ => acpica/components}/parser/psargs.c | 0 .../acpi/{ => acpica/components}/parser/psloop.c | 0 .../acpi/{ => acpica/components}/parser/psopcode.c | 0 .../acpi/{ => acpica/components}/parser/psparse.c | 0 .../acpi/{ => acpica/components}/parser/psscope.c | 0 .../acpi/{ => acpica/components}/parser/pstree.c | 0 .../acpi/{ => acpica/components}/parser/psutils.c | 0 [ *** stats truncated: 116 lines dropped *** ] ############################################################################ Commit: 98614a96583c9c30f646a48617dcf2e670fe5586 Author: Alex Smith <alex@xxxxxxxxxxxxxxxx> Date: Thu Jul 12 10:33:39 2012 UTC Merge branch 'master' into x86_64 ---------------------------------------------------------------------------- ############################################################################ Commit: 6ba74ba51c14e84609239758cb01f674ffa335e8 Author: Alex Smith <alex@xxxxxxxxxxxxxxxx> Date: Thu Jul 12 11:21:09 2012 UTC Fixed compilation of the boot loader on GCC 2. Not sure why but GCC 2 seems to be ignoring the extern "C" in smp.h when compiling smp_boot_other_cpus() resulting in undefined references. Fixed by putting extern "C" on the definition too. ---------------------------------------------------------------------------- diff --git a/src/system/boot/platform/bios_ia32/smp.cpp b/src/system/boot/platform/bios_ia32/smp.cpp index 0c6c5f7..ef95453 100644 --- a/src/system/boot/platform/bios_ia32/smp.cpp +++ b/src/system/boot/platform/bios_ia32/smp.cpp @@ -420,7 +420,7 @@ smp_init_other_cpus(void) } -void +extern "C" void smp_boot_other_cpus(void (*entryFunc)()) { if (gKernelArgs.num_cpus < 2) ############################################################################ Commit: 5774b5afa4f73fb010a7b7af03a9aa5f6deaec93 Author: Alex Smith <alex@xxxxxxxxxxxxxxxx> Date: Thu Jul 12 11:22:48 2012 UTC C++ified remaining C users of arch_cpu.h. ---------------------------------------------------------------------------- diff --git a/src/add-ons/kernel/bus_managers/isa/Jamfile b/src/add-ons/kernel/bus_managers/isa/Jamfile index d31c44d..84a540a 100644 --- a/src/add-ons/kernel/bus_managers/isa/Jamfile +++ b/src/add-ons/kernel/bus_managers/isa/Jamfile @@ -3,7 +3,7 @@ SubDir HAIKU_TOP src add-ons kernel bus_managers isa ; UsePrivateKernelHeaders ; KernelAddon isa : - isa.c + isa.cpp : isa_arch_bus_manager.a ; diff --git a/src/add-ons/kernel/bus_managers/isa/arch/x86/Jamfile b/src/add-ons/kernel/bus_managers/isa/arch/x86/Jamfile index 8c49de7..2618a2e 100644 --- a/src/add-ons/kernel/bus_managers/isa/arch/x86/Jamfile +++ b/src/add-ons/kernel/bus_managers/isa/arch/x86/Jamfile @@ -6,7 +6,7 @@ UsePrivateHeaders kernel [ FDirName kernel arch x86 ] ; UsePrivateHeaders [ FDirName kernel boot platform $(TARGET_BOOT_PLATFORM) ] ; KernelStaticLibrary isa_arch_bus_manager : - isa_dma.c - isa_controller.c + isa_dma.cpp + isa_controller.cpp ; diff --git a/src/add-ons/kernel/bus_managers/isa/arch/x86/isa_controller.c b/src/add-ons/kernel/bus_managers/isa/arch/x86/isa_controller.cpp similarity index 100% rename from src/add-ons/kernel/bus_managers/isa/arch/x86/isa_controller.c rename to src/add-ons/kernel/bus_managers/isa/arch/x86/isa_controller.cpp diff --git a/src/add-ons/kernel/bus_managers/isa/arch/x86/isa_dma.c b/src/add-ons/kernel/bus_managers/isa/arch/x86/isa_dma.cpp similarity index 100% rename from src/add-ons/kernel/bus_managers/isa/arch/x86/isa_dma.c rename to src/add-ons/kernel/bus_managers/isa/arch/x86/isa_dma.cpp diff --git a/src/add-ons/kernel/bus_managers/isa/isa.c b/src/add-ons/kernel/bus_managers/isa/isa.cpp similarity index 100% rename from src/add-ons/kernel/bus_managers/isa/isa.c rename to src/add-ons/kernel/bus_managers/isa/isa.cpp diff --git a/src/add-ons/kernel/bus_managers/pci/arch/x86/Jamfile b/src/add-ons/kernel/bus_managers/pci/arch/x86/Jamfile index 9328c66..f03f6c7 100644 --- a/src/add-ons/kernel/bus_managers/pci/arch/x86/Jamfile +++ b/src/add-ons/kernel/bus_managers/pci/arch/x86/Jamfile @@ -7,9 +7,9 @@ UsePrivateHeaders kernel [ FDirName kernel arch x86 ] [ FDirName kernel util ] ; KernelStaticLibrary pci_arch_bus_manager : pci_arch_info.cpp pci_arch_module.cpp - pci_bios.c - pci_controller.c - pci_io.c - pci_irq.c + pci_bios.cpp + pci_controller.cpp + pci_io.cpp + pci_irq.cpp pci_msi.cpp ; diff --git a/src/add-ons/kernel/bus_managers/pci/arch/x86/pci_bios.c b/src/add-ons/kernel/bus_managers/pci/arch/x86/pci_bios.cpp similarity index 100% rename from src/add-ons/kernel/bus_managers/pci/arch/x86/pci_bios.c rename to src/add-ons/kernel/bus_managers/pci/arch/x86/pci_bios.cpp diff --git a/src/add-ons/kernel/bus_managers/pci/arch/x86/pci_controller.c b/src/add-ons/kernel/bus_managers/pci/arch/x86/pci_controller.cpp similarity index 89% rename from src/add-ons/kernel/bus_managers/pci/arch/x86/pci_controller.c rename to src/add-ons/kernel/bus_managers/pci/arch/x86/pci_controller.cpp index 79431d8..4a0fd7f 100644 --- a/src/add-ons/kernel/bus_managers/pci/arch/x86/pci_controller.c +++ b/src/add-ons/kernel/bus_managers/pci/arch/x86/pci_controller.cpp @@ -181,29 +181,29 @@ pci_ram_address(const void *physical_address_in_system_memory) pci_controller pci_controller_x86_mech1 = { - .read_pci_config = pci_mech1_read_config, - .write_pci_config = pci_mech1_write_config, - .get_max_bus_devices = pci_mech1_get_max_bus_devices, - .read_pci_irq = pci_x86_irq_read, - .write_pci_irq = pci_x86_irq_write, + pci_mech1_read_config, + pci_mech1_write_config, + pci_mech1_get_max_bus_devices, + pci_x86_irq_read, + pci_x86_irq_write, }; pci_controller pci_controller_x86_mech2 = { - .read_pci_config = pci_mech2_read_config, - .write_pci_config = pci_mech2_write_config, - .get_max_bus_devices = pci_mech2_get_max_bus_devices, - .read_pci_irq = pci_x86_irq_read, - .write_pci_irq = pci_x86_irq_write, + pci_mech2_read_config, + pci_mech2_write_config, + pci_mech2_get_max_bus_devices, + pci_x86_irq_read, + pci_x86_irq_write, }; pci_controller pci_controller_x86_bios = { - .read_pci_config = pci_bios_read_config, - .write_pci_config = pci_bios_write_config, - .get_max_bus_devices = pci_bios_get_max_bus_devices, - .read_pci_irq = pci_x86_irq_read, - .write_pci_irq = pci_x86_irq_write, + pci_bios_read_config, + pci_bios_write_config, + pci_bios_get_max_bus_devices, + pci_x86_irq_read, + pci_x86_irq_write, }; diff --git a/src/add-ons/kernel/bus_managers/pci/arch/x86/pci_io.c b/src/add-ons/kernel/bus_managers/pci/arch/x86/pci_io.cpp similarity index 100% rename from src/add-ons/kernel/bus_managers/pci/arch/x86/pci_io.c rename to src/add-ons/kernel/bus_managers/pci/arch/x86/pci_io.cpp diff --git a/src/add-ons/kernel/bus_managers/pci/arch/x86/pci_irq.c b/src/add-ons/kernel/bus_managers/pci/arch/x86/pci_irq.cpp similarity index 100% rename from src/add-ons/kernel/bus_managers/pci/arch/x86/pci_irq.c rename to src/add-ons/kernel/bus_managers/pci/arch/x86/pci_irq.cpp diff --git a/src/libs/compat/freebsd_network/Jamfile b/src/libs/compat/freebsd_network/Jamfile index 28e747b..fff177a 100644 --- a/src/libs/compat/freebsd_network/Jamfile +++ b/src/libs/compat/freebsd_network/Jamfile @@ -13,7 +13,7 @@ Includes [ FGristFiles kernel_c++_structs.h ] SubDirCcFlags [ FDefines _KERNEL=1 ] ; KernelStaticLibrary libfreebsd_network.a : - bus.c + bus.cpp callout.cpp clock.c compat.c diff --git a/src/libs/compat/freebsd_network/bus.c b/src/libs/compat/freebsd_network/bus.cpp similarity index 97% rename from src/libs/compat/freebsd_network/bus.c rename to src/libs/compat/freebsd_network/bus.cpp index fddbd17..edd40af 100644 --- a/src/libs/compat/freebsd_network/bus.c +++ b/src/libs/compat/freebsd_network/bus.cpp @@ -5,12 +5,17 @@ */ +extern "C" { #include "device.h" +} #include <stdlib.h> +#include <algorithm> + #include <arch/cpu.h> +extern "C" { #include <compat/dev/pci/pcireg.h> #include <compat/dev/pci/pcivar.h> #include <compat/machine/resource.h> @@ -18,6 +23,7 @@ #include <compat/machine/bus.h> #include <compat/sys/rman.h> #include <compat/sys/bus.h> +} // private kernel header to get B_NO_HANDLED_INFO #include <int.h> @@ -149,7 +155,7 @@ bus_alloc_resource(device_t dev, int type, int *rid, unsigned long start, "0x%lx)\n", type, *rid, start, end, count, flags); // maybe a local array of resources is enough - res = malloc(sizeof(struct resource)); + res = (struct resource *)malloc(sizeof(struct resource)); if (res == NULL) return NULL; @@ -256,7 +262,7 @@ rman_get_bustag(struct resource *res) static int32 intr_wrapper(void *data) { - struct internal_intr *intr = data; + struct internal_intr *intr = (struct internal_intr *)data; //device_printf(intr->dev, "in interrupt handler.\n"); @@ -271,7 +277,7 @@ intr_wrapper(void *data) static int32 intr_fast_wrapper(void *data) { - struct internal_intr *intr = data; + struct internal_intr *intr = (struct internal_intr *)data; intr->handler(intr->arg); @@ -283,7 +289,7 @@ intr_fast_wrapper(void *data) static int32 intr_handler(void *data) { - struct internal_intr *intr = data; + struct internal_intr *intr = (struct internal_intr *)data; status_t status; while (1) { @@ -398,7 +404,7 @@ bus_setup_intr(device_t dev, struct resource *res, int flags, int bus_teardown_intr(device_t dev, struct resource *res, void *arg) { - struct internal_intr *intr = arg; + struct internal_intr *intr = (struct internal_intr *)arg; if (intr->is_msi && gPCIx86 != NULL) { // disable msi generation @@ -892,7 +898,7 @@ pci_set_powerstate(device_t dev, int newPowerState) if (oldPowerState == newPowerState) return EOK; - switch (max(oldPowerState, newPowerState)) { + switch (std::max(oldPowerState, newPowerState)) { case PCI_POWERSTATE_D2: stateTransitionDelayInUs = 200; break; diff --git a/src/system/libroot/os/arch/x86/Jamfile b/src/system/libroot/os/arch/x86/Jamfile index 7806e44..786a76e 100644 --- a/src/system/libroot/os/arch/x86/Jamfile +++ b/src/system/libroot/os/arch/x86/Jamfile @@ -19,7 +19,7 @@ MergeObject os_arch_$(TARGET_ARCH).o : system_info.c system_time_asm.S thread.c - time.c + time.cpp tls.c $(compatibilitySources) diff --git a/src/system/libroot/os/arch/x86/time.c b/src/system/libroot/os/arch/x86/time.cpp similarity index 100% rename from src/system/libroot/os/arch/x86/time.c rename to src/system/libroot/os/arch/x86/time.cpp ############################################################################ Commit: d38f1301d1e3f4c56f6350b40be3275ceff478ee Author: Alex Smith <alex@xxxxxxxxxxxxxxxx> Date: Thu Jul 12 12:55:03 2012 UTC Cleaned up 32-bit descriptors.h. ---------------------------------------------------------------------------- diff --git a/headers/private/kernel/arch/x86/32/descriptors.h b/headers/private/kernel/arch/x86/32/descriptors.h index 81fd842..e09b849 100644 --- a/headers/private/kernel/arch/x86/32/descriptors.h +++ b/headers/private/kernel/arch/x86/32/descriptors.h @@ -21,6 +21,7 @@ #define BIOS_DATA_SEGMENT 0x40 + #ifndef _ASSEMBLER // this file can also be included from assembler as well // (and is in arch_interrupts.S) @@ -34,7 +35,7 @@ // defines entries in the GDT/LDT -typedef struct segment_descriptor { +struct segment_descriptor { uint16 limit_00_15; // bit 0 - 15 uint16 base_00_15; // 16 - 31 uint32 base_23_16 : 8; // 0 - 7 @@ -48,11 +49,12 @@ typedef struct segment_descriptor { uint32 d_b : 1; // 22 uint32 granularity : 1; // 23 uint32 base_31_24 : 8; // 24 - 31 -} segment_descriptor; +}; -typedef struct interrupt_descriptor { - uint32 a, b; -} interrupt_descriptor; +struct interrupt_descriptor { + uint32 a; + uint32 b; +}; struct tss { uint16 prev_task; @@ -73,14 +75,14 @@ struct tss { static inline void -clear_segment_descriptor(struct segment_descriptor *desc) +clear_segment_descriptor(segment_descriptor* desc) { - *(long long *)desc = 0; + *(long long*)desc = 0; } static inline void -set_segment_descriptor_base(struct segment_descriptor *desc, addr_t base) +set_segment_descriptor_base(segment_descriptor* desc, addr_t base) { desc->base_00_15 = (addr_t)base & 0xffff; // base is 32 bits long desc->base_23_16 = ((addr_t)base >> 16) & 0xff; @@ -89,7 +91,7 @@ set_segment_descriptor_base(struct segment_descriptor *desc, addr_t base) static inline void -set_segment_descriptor(struct segment_descriptor *desc, addr_t base, uint32 limit, +set_segment_descriptor(segment_descriptor* desc, addr_t base, uint32 limit, uint8 type, uint8 privilegeLevel) { set_segment_descriptor_base(desc, base); @@ -104,8 +106,6 @@ set_segment_descriptor(struct segment_descriptor *desc, addr_t base, uint32 limi desc->limit_19_16 = ((addr_t)limit >> 16) & 0xf; desc->granularity = 0; // 1 byte granularity } - limit >>= 12; - desc->type = type; desc->desc_type = DT_CODE_DATA_SEGMENT; @@ -120,7 +120,7 @@ set_segment_descriptor(struct segment_descriptor *desc, addr_t base, uint32 limi static inline void -set_tss_descriptor(struct segment_descriptor *desc, addr_t base, uint32 limit) +set_tss_descriptor(segment_descriptor* desc, addr_t base, uint32 limit) { // the TSS descriptor has a special layout different from the standard descriptor set_segment_descriptor_base(desc, base); @@ -140,6 +140,7 @@ set_tss_descriptor(struct segment_descriptor *desc, addr_t base, uint32 limit) desc->zero = 0; } + #endif /* _ASSEMBLER */ #endif /* _KERNEL_ARCH_X86_32_DESCRIPTORS_H */