diff --git a/Externals/ACPICA/Makefile b/Externals/ACPICA/Makefile index 950f0abd15b827b7f7f1ea7a74ad46a73c537af3..a506ab932fd875b4a239ef15629c30ca959d1576 100644 --- a/Externals/ACPICA/Makefile +++ b/Externals/ACPICA/Makefile @@ -33,11 +33,18 @@ CPPFLAGS += -I $(ACPICAROOT)source/include -D _ACESS -D __KERNEL__ CPPFLAGS += -D ARCH=$(ARCH) -D ARCHDIR=$(ARCHDIR) -D PLATFORM=\"$(PLATFORM)\" -D ARCHDIR_IS_$(ARCHDIR)=1 -D PLATFORM_is_$(PLATFORM)=1 CPPFLAGS += -D KERNEL_VERSION=$(KERNEL_VERSION) -ffreestanding ifneq ($(ACPI_DEBUG),no) - CPPFLAGS += -D ACPI_DEBUG_OUTPUT=1 -D ACPI_DISASSEMBLER=1 + CPPFLAGS += -D ACPI_DEBUG_OUTPUT=1 + #CPPFLAGS += -D ACPI_DEBUGGER=1 + CPPFLAGS += -D ACPI_DISASSEMBLER=1 endif CFLAGS += -Wall -fno-stack-protector -Wstrict-prototypes -std=gnu99 -g SRCS := $(wildcard $(COMPDIR)*/*.c) +SRCS := $(filter-out $(COMPDIR)debugger/%,$(SRCS)) +ifeq ($(ACPI_DEBUG),no) + SRCS := $(filter-out $(COMPDIR)disassembler/%,$(SRCS)) + SRCS := $(filter-out %/resources/rsdump.c,$(SRCS)) +endif OBJS := $(SRCS:$(COMPDIR)%.c=obj-$(ARCH)/%.o) ACENV_H := $(ACPICAROOT)source/include/platform/acenv.h diff --git a/Externals/cross-compiler/patches/binutils/bfd/config.bfd.patch b/Externals/cross-compiler/patches/binutils/bfd/config.bfd.patch index 0c0183101e6135c310aadfd2fba0b4b92a73e4b1..c3a986726cf1ada98a0be92a1ddf105d4a4bfa89 100644 --- a/Externals/cross-compiler/patches/binutils/bfd/config.bfd.patch +++ b/Externals/cross-compiler/patches/binutils/bfd/config.bfd.patch @@ -1,14 +1,14 @@ --- bfd/config.bfd 2011-07-29 00:00:00.000000 +0000 +++ bfd/config.bfd 2013-03-01 10:45:00.000000 +0800 -@@ -1576,2 +1576,15 @@ - ;; +@@ -1712,3 +1712,16 @@ + ;; + i[3-7]86-*-acess2) -+ targ_defvec=bfd_elf32_i386_vec -+ targ_selvecs="bfd_elf32_i386_vec i386coff_vec" ++ targ_defvec=i386_elf32_vec ++ targ_selvecs="i386_elf32_vec i386_coff_vec" + ;; + x86_64-*-acess2) + targ_defvec=bfd_elf64_x86_64_vec -+ targ_selvecs="bfd_elf32_i386_vec bfd_elf32_x86_64_vec i386linux_vec i386pei_vec x86_64pei_vec bfd_elf64_l1om_vec bfd_elf64_k1om_vec" ++ targ_selvecs="i386_elf32_vec bfd_elf32_x86_64_vec i386linux_vec i386pei_vec x86_64pei_vec bfd_elf64_l1om_vec bfd_elf64_k1om_vec" + want64=true + ;; + arm-*-acess2) @@ -16,3 +16,4 @@ + targ_selvecs="bfd_elf32_bigarm_vec" + ;; # END OF targmatch.h + *) diff --git a/Externals/cross-compiler/patches/gcc/config.sub.patch b/Externals/cross-compiler/patches/gcc/config.sub.patch index 24a68c1b717587e9f7e5506a1e8d588978b50a1d..a961e435b245d7a1d7dd654b4670199568432c86 100644 --- a/Externals/cross-compiler/patches/gcc/config.sub.patch +++ b/Externals/cross-compiler/patches/gcc/config.sub.patch @@ -1,5 +1,8 @@ --- config.sub +++ config.sub -@@ -1336,1 +1336,2 @@ - | -aos* | -aros* \ +@@ -1379,4 +1379,5 @@ + | -powermax* | -dnix* | -nx6 | -nx7 | -sei* | -dragonfly* \ + | -acess2* \ + | -skyos* | -haiku* | -rdos* | -toppers* | -drops* | -es*) + # Remember, each alternative MUST END IN *, to match a version number. + ;; diff --git a/KernelLand/Kernel/arch/x86/acpica.c b/KernelLand/Kernel/arch/x86/acpica.c index 5603add407b4932a7c66f2bd751ccef83dfffbde..1d8b2e084c0bb5f6d0164fdedcf51e82a6b238e7 100644 --- a/KernelLand/Kernel/arch/x86/acpica.c +++ b/KernelLand/Kernel/arch/x86/acpica.c @@ -31,7 +31,7 @@ int ACPICA_Initialise(void) ACPI_STATUS rv; #ifdef ACPI_DEBUG_OUTPUT - AcpiDbgLevel = ACPI_DB_ALL; + AcpiDbgLevel = ACPI_LV_ALL; #endif rv = AcpiInitializeSubsystem(); @@ -83,7 +83,7 @@ ACPI_STATUS AcpiOsTerminate(void) ACPI_PHYSICAL_ADDRESS AcpiOsGetRootPointer(void) { - ACPI_SIZE val; + ACPI_PHYSICAL_ADDRESS val; ACPI_STATUS rv; if( gACPI_RSDPOverride ) @@ -238,7 +238,7 @@ void *AcpiOsMapMemory(ACPI_PHYSICAL_ADDRESS PhysicalAddress, ACPI_SIZE Length) { if( PhysicalAddress < ONEMEG ) { ASSERTCR(Length, <=, ONEMEG-PhysicalAddress, NULL); - return (void*)(KERNEL_BASE | PhysicalAddress); + return (void*)(KERNEL_BASE | (uintptr_t)(PhysicalAddress)); } Uint ofs = PhysicalAddress & (PAGE_SIZE-1); @@ -518,10 +518,10 @@ ACPI_STATUS AcpiOsReadMemory(ACPI_PHYSICAL_ADDRESS Address, UINT64 *Value, UINT3 { void *ptr; if( Address < ONEMEG ) { - ptr = (void*)(KERNEL_BASE | Address); + ptr = (void*)(KERNEL_BASE | (uintptr_t)Address); } else { - ptr = (char*)MM_MapTemp(Address) + (Address & 0xFFF); + ptr = (char*)MM_MapTemp(Address) + ((uintptr_t)Address & 0xFFF); } switch(Width) @@ -545,7 +545,7 @@ ACPI_STATUS AcpiOsWriteMemory(ACPI_PHYSICAL_ADDRESS Address, UINT64 Value, UINT3 { void *ptr; if( Address < ONEMEG ) { - ptr = (void*)(KERNEL_BASE | Address); + ptr = (void*)(KERNEL_BASE | (uintptr_t)Address); } else { ptr = (char*)MM_MapTemp(Address) + (Address & 0xFFF); diff --git a/KernelLand/Modules/Storage/AHCI/ahci.c b/KernelLand/Modules/Storage/AHCI/ahci.c index d48c1bf35144bab40c3e7d815c9779431875e88e..4fe429ae8a94f61ed2844d90de905d0eaabe74ea 100644 --- a/KernelLand/Modules/Storage/AHCI/ahci.c +++ b/KernelLand/Modules/Storage/AHCI/ahci.c @@ -572,13 +572,13 @@ int AHCI_DoFIS(tAHCI_Port *Port, int bWrite, while( ofs < OutSize ) { tPAddr phys = MM_GetPhysAddr( (char*)OutData + ofs ); - ASSERT( !(phys & 3) ); - // TODO: must be 4 byte aligned, and handle 64-bit addressing size_t len = MIN(OutSize - ofs, PAGE_SIZE - (phys % PAGE_SIZE)); + // TODO: must be 4 byte aligned, and handle 64-bit addressing + ASSERT( !(phys & 3) ); + // TODO: count must be even, and not more than 4MB ASSERT( !(len & 1) ); ASSERT( len < 4*1024*1024 ); LOG("PRDTL[%i] = %P+%i", prdtl, phys, len); - // TODO: count must be even. AHCI_int_SetAddr(Port->Ctrlr, &cmdt->PRDT[prdtl].DBA, phys); cmdt->PRDT[prdtl].DBC = len-1; prdtl ++; diff --git a/Usermode/Libraries/libc++_extras.so_src/Makefile b/Usermode/Libraries/libc++_extras.so_src/Makefile index f129b612ce26cf65f9bcf6b4beebb564e83bb494..02a325991fa22b0dc4bfd1342b0dc26d4303d195 100644 --- a/Usermode/Libraries/libc++_extras.so_src/Makefile +++ b/Usermode/Libraries/libc++_extras.so_src/Makefile @@ -13,7 +13,7 @@ LIBS += -lc++ include ../Makefile.tpl %.native: %.cpp - $(NCXX) $< -o $@ -Wall -std=c++11 -I include_exp/ + $(NCXX) $< -o $@ -Wall -std=c++14 -O3 -I include_exp/ TEST_cprintf.native: include_exp/cxxextras_printf diff --git a/Usermode/Libraries/libc++_extras.so_src/include_exp/cxxextras_printf b/Usermode/Libraries/libc++_extras.so_src/include_exp/cxxextras_printf index 7d05e21938356c9757fdc7b02c5085580d878202..4cc21ea98c924ebecd2f5c7be2cdb804d2c178e1 100644 --- a/Usermode/Libraries/libc++_extras.so_src/include_exp/cxxextras_printf +++ b/Usermode/Libraries/libc++_extras.so_src/include_exp/cxxextras_printf @@ -238,7 +238,8 @@ namespace _printf constexpr bool val_fmt_prec_arg(const char *fmt, PrintfFlags item) { //static_assert(false, "Too few arguments when getting precision modifier"); - return false ? false : throw "Too few arguments when getting precision modifier"; + //return false ? false : throw "Too few arguments when getting precision modifier"; + return false; } template <typename ...Args> constexpr bool val_fmt_prec(const char * fmt, PrintfFlags item, Args... args) @@ -274,7 +275,8 @@ namespace _printf constexpr bool val_fmt_width_arg(const char *fmt, PrintfFlags item) { //static_assert(false, "Too few arguments when reading width for width modifier"); - return false ? false : throw "Too few arguments when reading width for width modifier"; + //return false ? false : throw "Too few arguments when reading width for width modifier"; + return false; } template <typename ...Args> constexpr bool val_fmt_width(const char * fmt, PrintfFlags item, Args... args)