Get --ftrace working on aarch64

This change implements a new approach to function call logging, that's
based on the GCC flag: -fpatchable-function-entry. Read the commentary
in build/config.mk to learn how it works.
This commit is contained in:
Justine Tunney 2023-06-05 23:35:31 -07:00
parent 5b908bc756
commit eb40cb371d
No known key found for this signature in database
GPG key ID: BE714B4575D6E328
934 changed files with 2259 additions and 1268 deletions

View file

@ -41,11 +41,11 @@ $(DSP_BMP_A).pkg: \
o/$(MODE)/dsp/bmp/float2short.o \
o/$(MODE)/dsp/bmp/scalevolume.o: private \
OVERRIDE_CFLAGS += \
CFLAGS += \
$(MATHEMATICAL)
o/tiny/dsp/bmp/scalevolume.o: private \
OVERRIDE_CFLAGS += \
CFLAGS += \
-Os
DSP_BMP_LIBS = $(foreach x,$(DSP_BMP_ARTIFACTS),$($(x)))

View file

@ -40,15 +40,15 @@ o/$(MODE)/dsp/core/magikarp.o \
o/$(MODE)/dsp/core/c93654369.o \
o/$(MODE)/dsp/core/float2short.o \
o/$(MODE)/dsp/core/scalevolume.o: private \
OVERRIDE_CFLAGS += \
CFLAGS += \
$(MATHEMATICAL)
o/tiny/dsp/core/scalevolume.o: private \
OVERRIDE_CFLAGS += \
CFLAGS += \
-Os
o/$(MODE)/dsp/core/det3.o: private \
OVERRIDE_CFLAGS += \
CFLAGS += \
-ffast-math
DSP_CORE_LIBS = $(foreach x,$(DSP_CORE_ARTIFACTS),$($(x)))

View file

@ -52,7 +52,7 @@ $(DSP_MPEG_A).pkg: \
$(foreach x,$(DSP_MPEG_A_DIRECTDEPS),$($(x)_A).pkg)
o/$(MODE)/dsp/mpeg/clamp4int256-k8.o: private \
OVERRIDE_CFLAGS += \
CFLAGS += \
-Os
DSP_MPEG_LIBS = $(foreach x,$(DSP_MPEG_ARTIFACTS),$($(x)))

View file

@ -52,7 +52,7 @@ o/$(MODE)/dsp/scale/cdecimate2xuint8x8.o \
o/$(MODE)/dsp/scale/gyarados.o \
o/$(MODE)/dsp/scale/magikarp.o \
o/$(MODE)/dsp/scale/scale.o: private \
OVERRIDE_CFLAGS += \
CFLAGS += \
$(MATHEMATICAL)
DSP_SCALE_LIBS = $(foreach x,$(DSP_SCALE_ARTIFACTS),$($(x)))

View file

@ -54,12 +54,12 @@ $(DSP_TTY_A).pkg: \
$(foreach x,$(DSP_TTY_A_DIRECTDEPS),$($(x)_A).pkg)
o/$(MODE)/dsp/tty/ttyraster.o: private \
OVERRIDE_CFLAGS += \
CFLAGS += \
$(MATHEMATICAL)
ifeq ($(ARCH), aarch64)
# takes 14 seconds to compile with aarch64 gcc
o/$(MODE)/dsp/tty/ttyraster.o: private OVERRIDE_CFLAGS += -O1
o/$(MODE)/dsp/tty/ttyraster.o: private CFLAGS += -O1
o/$(MODE)/dsp/tty/ttyraster.o: private QUOTA += -C128
endif

View file

@ -23,10 +23,11 @@
// @param rdi points to nonempty array
// @param rsi is item count divisible by 16
// @note needs avx2 (haswell+)
.ftrace1
windex_avx2:
.ftrace2
push %rbp
mov %rsp,%rbp
.profilable
and $-32,%rsp
sub $32,%rsp
vmovdqa (%rdi),%ymm1

View file

@ -23,10 +23,11 @@
// @param rdi points to nonempty array
// @param esi is 16-byte aligned 8+ / 8 multiple array item count
// @note needs sse4 (nehalem+)
.ftrace1
windex_sse4:
.ftrace2
push %rbp
mov %rsp,%rbp
.profilable
mov $8,%eax
sub $32,%rsp
movdqa (%rdi),%xmm2