The reason why the old vDSOs were written in C using inline assembly was purely because they were embedded in the C library directly as static inline functions. This was practical during development, because it meant you could invoke system calls without any library dependencies. The vDSO was simply a copy of these functions. Now that we require the use of the vDSO, there is no longer any need for embedding them in C code directly. Rewriting them in assembly has the advantage that they are closer to ideal (less useless branching, less assumptions about registers remaining unclobbered by the kernel, etc). They are also easier to build, as they no longer depend on the C type information for CloudABI. Obtained from: https://github.com/NuxiNL/cloudabi
115 lines
4.7 KiB
Plaintext
115 lines
4.7 KiB
Plaintext
# $FreeBSD$
|
|
cloudabi64_vdso.o optional compat_cloudabi64 \
|
|
dependency "$S/contrib/cloudabi/cloudabi_vdso_aarch64.S" \
|
|
compile-with "${CC} -x assembler-with-cpp -shared -nostdinc -nostdlib -Wl,-T$S/compat/cloudabi64/cloudabi64_vdso.lds.s $S/contrib/cloudabi/cloudabi_vdso_aarch64.S -o ${.TARGET}" \
|
|
no-obj no-implicit-rule \
|
|
clean "cloudabi64_vdso.o"
|
|
#
|
|
cloudabi64_vdso_blob.o optional compat_cloudabi64 \
|
|
dependency "cloudabi64_vdso.o" \
|
|
compile-with "${OBJCOPY} --input-target binary --output-target elf64-littleaarch64 --binary-architecture aarch64 cloudabi64_vdso.o ${.TARGET}" \
|
|
no-implicit-rule \
|
|
clean "cloudabi64_vdso_blob.o"
|
|
#
|
|
arm/arm/generic_timer.c standard
|
|
arm/arm/gic.c standard
|
|
arm/arm/gic_fdt.c optional fdt
|
|
arm/arm/pmu.c standard
|
|
arm64/acpica/acpi_machdep.c optional acpi
|
|
arm64/acpica/OsdEnvironment.c optional acpi
|
|
arm64/acpica/acpi_wakeup.c optional acpi
|
|
arm64/acpica/pci_cfgreg.c optional acpi pci
|
|
arm64/arm64/autoconf.c standard
|
|
arm64/arm64/bcopy.c standard
|
|
arm64/arm64/bus_machdep.c standard
|
|
arm64/arm64/bus_space_asm.S standard
|
|
arm64/arm64/busdma_bounce.c standard
|
|
arm64/arm64/busdma_machdep.c standard
|
|
arm64/arm64/bzero.S standard
|
|
arm64/arm64/clock.c standard
|
|
arm64/arm64/copyinout.S standard
|
|
arm64/arm64/copystr.c standard
|
|
arm64/arm64/cpufunc_asm.S standard
|
|
arm64/arm64/db_disasm.c optional ddb
|
|
arm64/arm64/db_interface.c optional ddb
|
|
arm64/arm64/db_trace.c optional ddb
|
|
arm64/arm64/debug_monitor.c optional kdb
|
|
arm64/arm64/disassem.c optional ddb
|
|
arm64/arm64/dump_machdep.c standard
|
|
arm64/arm64/elf_machdep.c standard
|
|
arm64/arm64/exception.S standard
|
|
arm64/arm64/gicv3_its.c optional intrng
|
|
arm64/arm64/gic_v3.c standard
|
|
arm64/arm64/gic_v3_fdt.c optional fdt
|
|
arm64/arm64/identcpu.c standard
|
|
arm64/arm64/in_cksum.c optional inet | inet6
|
|
arm64/arm64/locore.S standard no-obj
|
|
arm64/arm64/machdep.c standard
|
|
arm64/arm64/mem.c standard
|
|
arm64/arm64/minidump_machdep.c standard
|
|
arm64/arm64/mp_machdep.c optional smp
|
|
arm64/arm64/nexus.c standard
|
|
arm64/arm64/ofw_machdep.c optional fdt
|
|
arm64/arm64/pmap.c standard
|
|
arm64/arm64/stack_machdep.c optional ddb | stack
|
|
arm64/arm64/support.S standard
|
|
arm64/arm64/swtch.S standard
|
|
arm64/arm64/sys_machdep.c standard
|
|
arm64/arm64/trap.c standard
|
|
arm64/arm64/uio_machdep.c standard
|
|
arm64/arm64/uma_machdep.c standard
|
|
arm64/arm64/unwind.c optional ddb | kdtrace_hooks | stack
|
|
arm64/arm64/vfp.c standard
|
|
arm64/arm64/vm_machdep.c standard
|
|
arm64/cavium/thunder_pcie_fdt.c optional soc_cavm_thunderx pci fdt
|
|
arm64/cavium/thunder_pcie_pem.c optional soc_cavm_thunderx pci
|
|
arm64/cavium/thunder_pcie_pem_fdt.c optional soc_cavm_thunderx pci fdt
|
|
arm64/cavium/thunder_pcie_common.c optional soc_cavm_thunderx pci
|
|
arm64/cloudabi64/cloudabi64_sysvec.c optional compat_cloudabi64
|
|
crypto/blowfish/bf_enc.c optional crypto | ipsec
|
|
crypto/des/des_enc.c optional crypto | ipsec | netsmb
|
|
dev/acpica/acpi_if.m optional acpi
|
|
dev/ahci/ahci_generic.c optional ahci fdt
|
|
dev/hwpmc/hwpmc_arm64.c optional hwpmc
|
|
dev/hwpmc/hwpmc_arm64_md.c optional hwpmc
|
|
dev/mmc/host/dwmmc.c optional dwmmc fdt
|
|
dev/mmc/host/dwmmc_hisi.c optional dwmmc fdt soc_hisi_hi6220
|
|
dev/ofw/ofw_cpu.c optional fdt
|
|
dev/ofw/ofwpci.c optional fdt pci
|
|
dev/pci/pci_host_generic.c optional pci fdt
|
|
dev/psci/psci.c optional psci
|
|
dev/psci/psci_arm64.S optional psci
|
|
dev/uart/uart_cpu_fdt.c optional uart fdt
|
|
dev/uart/uart_dev_pl011.c optional uart pl011
|
|
dev/usb/controller/dwc_otg_hisi.c optional dwcotg fdt soc_hisi_hi6220
|
|
dev/usb/controller/generic_ehci.c optional ehci acpi
|
|
dev/usb/controller/generic_ohci.c optional ohci fdt
|
|
dev/usb/controller/generic_usb_if.m optional ohci fdt
|
|
dev/vnic/mrml_bridge.c optional vnic fdt
|
|
dev/vnic/nic_main.c optional vnic pci
|
|
dev/vnic/nicvf_main.c optional vnic pci pci_iov
|
|
dev/vnic/nicvf_queues.c optional vnic pci pci_iov
|
|
dev/vnic/thunder_bgx_fdt.c optional vnic fdt
|
|
dev/vnic/thunder_bgx.c optional vnic pci
|
|
dev/vnic/thunder_mdio_fdt.c optional vnic fdt
|
|
dev/vnic/thunder_mdio.c optional vnic
|
|
dev/vnic/lmac_if.m optional inet | inet6 | vnic
|
|
kern/kern_clocksource.c standard
|
|
kern/msi_if.m optional intrng
|
|
kern/pic_if.m optional intrng
|
|
kern/subr_devmap.c standard
|
|
kern/subr_intr.c optional intrng
|
|
libkern/bcmp.c standard
|
|
libkern/ffs.c standard
|
|
libkern/ffsl.c standard
|
|
libkern/ffsll.c standard
|
|
libkern/fls.c standard
|
|
libkern/flsl.c standard
|
|
libkern/flsll.c standard
|
|
libkern/memmove.c standard
|
|
libkern/memset.c standard
|
|
cddl/contrib/opensolaris/common/atomic/aarch64/opensolaris_atomic.S optional zfs | dtrace compile-with "${CDDL_C}"
|
|
cddl/dev/dtrace/aarch64/dtrace_asm.S optional dtrace compile-with "${DTRACE_S}"
|
|
cddl/dev/dtrace/aarch64/dtrace_subr.c optional dtrace compile-with "${DTRACE_C}"
|
|
cddl/dev/fbt/aarch64/fbt_isa.c optional dtrace_fbt | dtraceall compile-with "${FBT_C}"
|