From 5158bee08cab9b6484ed5d455f1b6b7023e65ecd Mon Sep 17 00:00:00 2001 From: Andreas Kling Date: Fri, 8 Feb 2019 01:24:52 +0100 Subject: [PATCH] Don't use -mregparm=3 in userspace. It's pretty comfy having arguments in registers in the kernel for now though. --- Clock/Makefile | 2 +- FontEditor/Makefile | 2 +- Launcher/Launcher | Bin 67092 -> 67172 bytes Launcher/Makefile | 2 +- LibC/.gitignore | 1 + LibC/Makefile | 16 ++++++++++------ LibC/setjmp.asm | 33 +++++++++++++++++++++++++++++++++ LibC/setjmp.cpp | 35 ----------------------------------- LibGUI/Makefile | 2 +- Terminal/Makefile | 2 +- Userland/Makefile | 2 +- 11 files changed, 50 insertions(+), 47 deletions(-) create mode 100644 LibC/setjmp.asm delete mode 100644 LibC/setjmp.cpp diff --git a/Clock/Makefile b/Clock/Makefile index 1123db515b..60431e8279 100644 --- a/Clock/Makefile +++ b/Clock/Makefile @@ -8,7 +8,7 @@ ARCH_FLAGS = STANDARD_FLAGS = -std=c++17 -nostdinc++ -nostdlib -nostdinc USERLAND_FLAGS = -ffreestanding -fno-stack-protector -fno-ident WARNING_FLAGS = -Wextra -Wall -Wundef -Wcast-qual -Wwrite-strings -FLAVOR_FLAGS = -march=i386 -mregparm=3 -m32 -fno-exceptions -fno-rtti -fmerge-all-constants -fno-unroll-loops -fno-pie -fno-pic +FLAVOR_FLAGS = -march=i386 -m32 -fno-exceptions -fno-rtti -fmerge-all-constants -fno-unroll-loops -fno-pie -fno-pic OPTIMIZATION_FLAGS = -Oz -fno-asynchronous-unwind-tables INCLUDE_FLAGS = -I.. -I. -I../LibC diff --git a/FontEditor/Makefile b/FontEditor/Makefile index 27d976d494..e80b0620ea 100644 --- a/FontEditor/Makefile +++ b/FontEditor/Makefile @@ -8,7 +8,7 @@ ARCH_FLAGS = STANDARD_FLAGS = -std=c++17 -nostdinc++ -nostdlib -nostdinc USERLAND_FLAGS = -ffreestanding -fno-stack-protector -fno-ident WARNING_FLAGS = -Wextra -Wall -Wundef -Wcast-qual -Wwrite-strings -FLAVOR_FLAGS = -march=i386 -mregparm=3 -m32 -fno-exceptions -fno-rtti -fmerge-all-constants -fno-unroll-loops -fno-pie -fno-pic +FLAVOR_FLAGS = -march=i386 -m32 -fno-exceptions -fno-rtti -fmerge-all-constants -fno-unroll-loops -fno-pie -fno-pic OPTIMIZATION_FLAGS = -Oz -fno-asynchronous-unwind-tables INCLUDE_FLAGS = -I.. -I. -I../LibC diff --git a/Launcher/Launcher b/Launcher/Launcher index d0a35e2e364078058263323f6abf69bff465aae2..80b31262b4d845560aff9b3ebac06cc5936b79ec 100755 GIT binary patch literal 67172 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�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 delta 30823 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 Gqc{Mh_1u{N diff --git a/Launcher/Makefile b/Launcher/Makefile index 29b4322700..60c143b40b 100644 --- a/Launcher/Makefile +++ b/Launcher/Makefile @@ -7,7 +7,7 @@ ARCH_FLAGS = STANDARD_FLAGS = -std=c++17 -nostdinc++ -nostdlib -nostdinc USERLAND_FLAGS = -ffreestanding -fno-stack-protector -fno-ident WARNING_FLAGS = -Wextra -Wall -Wundef -Wcast-qual -Wwrite-strings -FLAVOR_FLAGS = -march=i386 -mregparm=3 -m32 -fno-exceptions -fno-rtti -fmerge-all-constants -fno-unroll-loops -fno-pie -fno-pic +FLAVOR_FLAGS = -march=i386 -m32 -fno-exceptions -fno-rtti -fmerge-all-constants -fno-unroll-loops -fno-pie -fno-pic OPTIMIZATION_FLAGS = -Oz -fno-asynchronous-unwind-tables INCLUDE_FLAGS = -I.. -I. -I../LibC diff --git a/LibC/.gitignore b/LibC/.gitignore index 196c9f02af..5191909171 100644 --- a/LibC/.gitignore +++ b/LibC/.gitignore @@ -1,3 +1,4 @@ *.o +*.no *.d LibC.a diff --git a/LibC/Makefile b/LibC/Makefile index e44257aacb..3254a55339 100644 --- a/LibC/Makefile +++ b/LibC/Makefile @@ -31,7 +31,6 @@ LIBC_OBJS = \ grp.o \ times.o \ termcap.o \ - setjmp.o \ stat.o \ mntent.o \ ctype.o \ @@ -47,14 +46,16 @@ LIBC_OBJS = \ poll.o \ entry.o -OBJS = $(AK_OBJS) $(WIDGETS_OBJS) $(LIBC_OBJS) $(SHAREDGRAPHICS_OBJS) +ASM_OBJS = setjmp.no + +CPP_OBJS = $(AK_OBJS) $(WIDGETS_OBJS) $(LIBC_OBJS) $(SHAREDGRAPHICS_OBJS) LIBRARY = LibC.a ARCH_FLAGS = STANDARD_FLAGS = -std=c++17 -nostdinc++ -nostdlib -nostdinc LIBC_FLAGS = -ffreestanding -fno-stack-protector -fno-ident WARNING_FLAGS = -Wextra -Wall -Wundef -Wcast-qual -Wwrite-strings -FLAVOR_FLAGS = -fomit-frame-pointer -mregparm=3 -march=i386 -m32 -fno-exceptions -fno-rtti -ffunction-sections -fdata-sections -fmerge-all-constants -fno-unroll-loops -fno-pie -fno-pic +FLAVOR_FLAGS = -fomit-frame-pointer -march=i386 -m32 -fno-exceptions -fno-rtti -ffunction-sections -fdata-sections -fmerge-all-constants -fno-unroll-loops -fno-pie -fno-pic OPTIMIZATION_FLAGS = -O2 -fno-asynchronous-unwind-tables INCLUDE_FLAGS = -I.. -I. @@ -68,14 +69,17 @@ LDFLAGS = -T linker.ld --strip-debug -melf_i386 --gc-sections all: $(LIBRARY) -$(LIBRARY): $(OBJS) - @echo "LIB $@"; $(AR) rcs $@ $(OBJS) +$(LIBRARY): $(CPP_OBJS) $(ASM_OBJS) + @echo "LIB $@"; $(AR) rcs $@ $(CPP_OBJS) $(ASM_OBJS) .cpp.o: @echo "CXX $<"; $(CXX) $(CXXFLAGS) -o $@ -c $< +%.no: %.asm + @echo "NASM $@"; nasm -f elf -o $@ $< + -include $(OBJS:%.o=%.d) clean: - @echo "CLEAN"; rm -f $(LIBRARY) $(OBJS) *.d + @echo "CLEAN"; rm -f $(LIBRARY) $(CPP_OBJS) $(ASM_OBJS) *.d diff --git a/LibC/setjmp.asm b/LibC/setjmp.asm new file mode 100644 index 0000000000..7f1f13feec --- /dev/null +++ b/LibC/setjmp.asm @@ -0,0 +1,33 @@ +; asmsyntax=nasm + +global setjmp +setjmp: + mov eax, [esp + 4] + mov [eax * 4], ebx + mov [eax + 1 * 4], esi + mov [eax + 2 * 4], edi + mov [eax + 3 * 4], ebp + lea ecx, [esp + 4] + mov [eax + 4 * 4], ecx + mov ecx, [esp] + mov [eax + 5 * 4], ecx + xor eax, eax + ret + +global longjmp +longjmp: + mov edx, [esp + 4] + mov eax, [esp + 8] + mov ebx, [edx * 4] + mov esi, [edx + 1 * 4] + mov edi, [edx + 2 * 4] + mov ebp, [edx + 3 * 4] + mov ecx, [edx + 4 * 4] + mov esp, ecx + mov ecx, [edx + 5 * 4] + test eax, eax + jnz .nonzero + mov eax, 1 +.nonzero: + jmp ecx + diff --git a/LibC/setjmp.cpp b/LibC/setjmp.cpp deleted file mode 100644 index 57b864f79c..0000000000 --- a/LibC/setjmp.cpp +++ /dev/null @@ -1,35 +0,0 @@ -#include -#include -#include - -asm( -".globl setjmp\n\ -setjmp:\n\ - movl %ebx, 0(%eax)\n\ - movl %esi, 4(%eax)\n\ - movl %edi, 8(%eax)\n\ - movl %ebp, 12(%eax)\n\ - movl %esp, 16(%eax)\n\ - movl (%esp), %ecx\n\ - movl %ecx, 20(%eax)\n\ - xorl %eax, %eax\n\ - ret\n\ -"); - -asm( -".globl longjmp\n\ -longjmp:\n\ - xchgl %edx, %eax\n\ - test %eax, %eax\n\ - jnz 1f\n\ - incl %eax\n\ -1:\n\ - mov 0(%edx), %ebx\n\ - mov 4(%edx), %esi\n\ - mov 8(%edx), %edi\n\ - mov 12(%edx), %ebp\n\ - mov 16(%edx), %ecx\n\ - mov %ecx, %esp\n\ - mov 20(%edx), %ecx\n\ - jmp *%ecx\n\ -"); diff --git a/LibGUI/Makefile b/LibGUI/Makefile index f90e7398f8..6d1dc21472 100644 --- a/LibGUI/Makefile +++ b/LibGUI/Makefile @@ -26,7 +26,7 @@ ARCH_FLAGS = STANDARD_FLAGS = -std=c++17 -nostdinc++ -nostdlib -nostdinc LIBC_FLAGS = -ffreestanding -fno-stack-protector -fno-ident WARNING_FLAGS = -Wextra -Wall -Wundef -Wcast-qual -Wwrite-strings -FLAVOR_FLAGS = -fomit-frame-pointer -mregparm=3 -march=i386 -m32 -fno-exceptions -fno-rtti -ffunction-sections -fdata-sections -fmerge-all-constants -fno-unroll-loops -fno-pie -fno-pic +FLAVOR_FLAGS = -fomit-frame-pointer -march=i386 -m32 -fno-exceptions -fno-rtti -ffunction-sections -fdata-sections -fmerge-all-constants -fno-unroll-loops -fno-pie -fno-pic OPTIMIZATION_FLAGS = -Oz -fno-asynchronous-unwind-tables INCLUDE_FLAGS = -I../LibC -I.. -I. diff --git a/Terminal/Makefile b/Terminal/Makefile index c8c0faf712..9b448b9055 100644 --- a/Terminal/Makefile +++ b/Terminal/Makefile @@ -8,7 +8,7 @@ ARCH_FLAGS = STANDARD_FLAGS = -std=c++17 -nostdinc++ -nostdlib -nostdinc USERLAND_FLAGS = -ffreestanding -fno-stack-protector -fno-ident WARNING_FLAGS = -Wextra -Wall -Wundef -Wcast-qual -Wwrite-strings -FLAVOR_FLAGS = -march=i386 -mregparm=3 -m32 -fno-exceptions -fno-rtti -fmerge-all-constants -fno-unroll-loops -fno-pie -fno-pic +FLAVOR_FLAGS = -march=i386 -m32 -fno-exceptions -fno-rtti -fmerge-all-constants -fno-unroll-loops -fno-pie -fno-pic OPTIMIZATION_FLAGS = -Oz -fno-asynchronous-unwind-tables INCLUDE_FLAGS = -I.. -I. -I../LibC diff --git a/Userland/Makefile b/Userland/Makefile index 4893210c38..a21cbe9610 100644 --- a/Userland/Makefile +++ b/Userland/Makefile @@ -65,7 +65,7 @@ ARCH_FLAGS = STANDARD_FLAGS = -std=c++17 -nostdinc++ -nostdlib -nostdinc USERLAND_FLAGS = -ffreestanding -fno-stack-protector -fno-ident WARNING_FLAGS = -Wextra -Wall -Wundef -Wcast-qual -Wwrite-strings -FLAVOR_FLAGS = -march=i386 -mregparm=3 -m32 -fno-exceptions -fno-rtti -fmerge-all-constants -fno-unroll-loops -fno-pie -fno-pic +FLAVOR_FLAGS = -march=i386 -m32 -fno-exceptions -fno-rtti -fmerge-all-constants -fno-unroll-loops -fno-pie -fno-pic OPTIMIZATION_FLAGS = -Oz -fno-asynchronous-unwind-tables INCLUDE_FLAGS = -I.. -I. -I../LibC