mirror of
https://github.com/Dasharo/linux.git
synced 2026-03-06 15:25:10 -08:00
Merge tag 'kbuild-v6.3' of git://git.kernel.org/pub/scm/linux/kernel/git/masahiroy/linux-kbuild
Pull Kbuild updates from Masahiro Yamada: - Change V=1 option to print both short log and full command log - Allow V=1 and V=2 to be combined as V=12 - Make W=1 detect wrong .gitignore files - Tree-wide cleanups for unused command line arguments passed to Clang - Stop using -Qunused-arguments with Clang - Make scripts/setlocalversion handle only correct release tags instead of any arbitrary annotated tag - Create Debian and RPM source packages without cleaning the source tree - Various cleanups for packaging * tag 'kbuild-v6.3' of git://git.kernel.org/pub/scm/linux/kernel/git/masahiroy/linux-kbuild: (74 commits) kbuild: rpm-pkg: remove unneeded KERNELRELEASE from modules/headers_install docs: kbuild: remove description of KBUILD_LDS_MODULE .gitattributes: use 'dts' diff driver for *.dtso files kbuild: deb-pkg: improve the usability of source package kbuild: deb-pkg: fix binary-arch and clean in debian/rules kbuild: tar-pkg: use tar rules in scripts/Makefile.package kbuild: make perf-tar*-src-pkg work without relying on git kbuild: deb-pkg: switch over to source format 3.0 (quilt) kbuild: deb-pkg: make .orig tarball a hard link if possible kbuild: deb-pkg: hide KDEB_SOURCENAME from Makefile kbuild: srcrpm-pkg: create source package without cleaning kbuild: rpm-pkg: build binary packages from source rpm kbuild: deb-pkg: create source package without cleaning kbuild: add a tool to list files ignored by git Documentation/llvm: add Chimera Linux, Google and Meta datacenters setlocalversion: use only the correct release tag for git-describe setlocalversion: clean up the construction of version output .gitignore: ignore *.cover and *.mbx kbuild: remove --include-dir MAKEFLAG from top Makefile kbuild: fix trivial typo in comment ...
This commit is contained in:
8
.gitattributes
vendored
8
.gitattributes
vendored
@@ -1,4 +1,4 @@
|
||||
*.c diff=cpp
|
||||
*.h diff=cpp
|
||||
*.dtsi diff=dts
|
||||
*.dts diff=dts
|
||||
# SPDX-License-Identifier: GPL-2.0-only
|
||||
*.[ch] diff=cpp
|
||||
*.dts diff=dts
|
||||
*.dts[io] diff=dts
|
||||
|
||||
4
.gitignore
vendored
4
.gitignore
vendored
@@ -4,7 +4,7 @@
|
||||
# subdirectories here. Add them in the ".gitignore" file
|
||||
# in that subdirectory instead.
|
||||
#
|
||||
# NOTE! Please use 'git ls-files -i --exclude-standard'
|
||||
# NOTE! Please use 'git ls-files -i -c --exclude-per-directory=.gitignore'
|
||||
# command after changing this file, to see if there are
|
||||
# any tracked files which get ignored after the change.
|
||||
#
|
||||
@@ -16,6 +16,7 @@
|
||||
*.bin
|
||||
*.bz2
|
||||
*.c.[012]*.*
|
||||
*.cover
|
||||
*.dt.yaml
|
||||
*.dtb
|
||||
*.dtbo
|
||||
@@ -33,6 +34,7 @@
|
||||
*.lz4
|
||||
*.lzma
|
||||
*.lzo
|
||||
*.mbx
|
||||
*.mod
|
||||
*.mod.c
|
||||
*.o
|
||||
|
||||
@@ -28,7 +28,7 @@ BUILDDIR = $(obj)/output
|
||||
PDFLATEX = xelatex
|
||||
LATEXOPTS = -interaction=batchmode -no-shell-escape
|
||||
|
||||
ifeq ($(KBUILD_VERBOSE),0)
|
||||
ifeq ($(findstring 1, $(KBUILD_VERBOSE)),)
|
||||
SPHINXOPTS += "-q"
|
||||
endif
|
||||
|
||||
|
||||
@@ -91,7 +91,6 @@ asm_offsets.h
|
||||
autoconf.h*
|
||||
av_permissions.h
|
||||
bbootsect
|
||||
bin2c
|
||||
binkernel.spec
|
||||
bootsect
|
||||
bounds.h
|
||||
|
||||
@@ -15,12 +15,15 @@ such as GCC and binutils. Ongoing work has allowed for `Clang
|
||||
<https://clang.llvm.org/>`_ and `LLVM <https://llvm.org/>`_ utilities to be
|
||||
used as viable substitutes. Distributions such as `Android
|
||||
<https://www.android.com/>`_, `ChromeOS
|
||||
<https://www.chromium.org/chromium-os>`_, and `OpenMandriva
|
||||
<https://www.openmandriva.org/>`_ use Clang built kernels. `LLVM is a
|
||||
collection of toolchain components implemented in terms of C++ objects
|
||||
<https://www.aosabook.org/en/llvm.html>`_. Clang is a front-end to LLVM that
|
||||
supports C and the GNU C extensions required by the kernel, and is pronounced
|
||||
"klang," not "see-lang."
|
||||
<https://www.chromium.org/chromium-os>`_, `OpenMandriva
|
||||
<https://www.openmandriva.org/>`_, and `Chimera Linux
|
||||
<https://chimera-linux.org/>`_ use Clang built kernels. Google's and Meta's
|
||||
datacenter fleets also run kernels built with Clang.
|
||||
|
||||
`LLVM is a collection of toolchain components implemented in terms of C++
|
||||
objects <https://www.aosabook.org/en/llvm.html>`_. Clang is a front-end to LLVM
|
||||
that supports C and the GNU C extensions required by the kernel, and is
|
||||
pronounced "klang," not "see-lang."
|
||||
|
||||
Clang
|
||||
-----
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -11085,7 +11085,7 @@ M: Masahiro Yamada <masahiroy@kernel.org>
|
||||
L: linux-kbuild@vger.kernel.org
|
||||
S: Maintained
|
||||
Q: https://patchwork.kernel.org/project/linux-kbuild/list/
|
||||
T: git git://git.kernel.org/pub/scm/linux/kernel/git/masahiroy/linux-kbuild.git kconfig
|
||||
T: git git://git.kernel.org/pub/scm/linux/kernel/git/masahiroy/linux-kbuild.git kbuild
|
||||
F: Documentation/kbuild/kconfig*
|
||||
F: scripts/Kconfig.include
|
||||
F: scripts/kconfig/
|
||||
|
||||
93
Makefile
93
Makefile
@@ -56,26 +56,21 @@ unexport GREP_OPTIONS
|
||||
# Beautify output
|
||||
# ---------------------------------------------------------------------------
|
||||
#
|
||||
# Normally, we echo the whole command before executing it. By making
|
||||
# that echo $($(quiet)$(cmd)), we now have the possibility to set
|
||||
# $(quiet) to choose other forms of output instead, e.g.
|
||||
# Most of build commands in Kbuild start with "cmd_". You can optionally define
|
||||
# "quiet_cmd_*". If defined, the short log is printed. Otherwise, no log from
|
||||
# that command is printed by default.
|
||||
#
|
||||
# quiet_cmd_cc_o_c = Compiling $(RELDIR)/$@
|
||||
# cmd_cc_o_c = $(CC) $(c_flags) -c -o $@ $<
|
||||
#
|
||||
# If $(quiet) is empty, the whole command will be printed.
|
||||
# If it is set to "quiet_", only the short version will be printed.
|
||||
# If it is set to "silent_", nothing will be printed at all, since
|
||||
# the variable $(silent_cmd_cc_o_c) doesn't exist.
|
||||
# e.g.)
|
||||
# quiet_cmd_depmod = DEPMOD $(MODLIB)
|
||||
# cmd_depmod = $(srctree)/scripts/depmod.sh $(DEPMOD) $(KERNELRELEASE)
|
||||
#
|
||||
# A simple variant is to prefix commands with $(Q) - that's useful
|
||||
# for commands that shall be hidden in non-verbose mode.
|
||||
#
|
||||
# $(Q)ln $@ :<
|
||||
# $(Q)$(MAKE) $(build)=scripts/basic
|
||||
#
|
||||
# If KBUILD_VERBOSE equals 0 then the above command will be hidden.
|
||||
# If KBUILD_VERBOSE equals 1 then the above command is displayed.
|
||||
# If KBUILD_VERBOSE equals 2 then give the reason why each target is rebuilt.
|
||||
# If KBUILD_VERBOSE contains 1, the whole command is echoed.
|
||||
# If KBUILD_VERBOSE contains 2, the reason for rebuilding is printed.
|
||||
#
|
||||
# To put more focus on warnings, be less verbose as default
|
||||
# Use 'make V=1' to see the full commands
|
||||
@@ -83,16 +78,13 @@ unexport GREP_OPTIONS
|
||||
ifeq ("$(origin V)", "command line")
|
||||
KBUILD_VERBOSE = $(V)
|
||||
endif
|
||||
ifndef KBUILD_VERBOSE
|
||||
KBUILD_VERBOSE = 0
|
||||
endif
|
||||
|
||||
ifeq ($(KBUILD_VERBOSE),1)
|
||||
quiet = quiet_
|
||||
Q = @
|
||||
|
||||
ifneq ($(findstring 1, $(KBUILD_VERBOSE)),)
|
||||
quiet =
|
||||
Q =
|
||||
else
|
||||
quiet=quiet_
|
||||
Q = @
|
||||
endif
|
||||
|
||||
# If the user is running make -s (silent mode), suppress echoing of
|
||||
@@ -100,14 +92,14 @@ endif
|
||||
# make-4.0 (and later) keep single letter options in the 1st word of MAKEFLAGS.
|
||||
|
||||
ifeq ($(filter 3.%,$(MAKE_VERSION)),)
|
||||
silence:=$(findstring s,$(firstword -$(MAKEFLAGS)))
|
||||
short-opts := $(firstword -$(MAKEFLAGS))
|
||||
else
|
||||
silence:=$(findstring s,$(filter-out --%,$(MAKEFLAGS)))
|
||||
short-opts := $(filter-out --%,$(MAKEFLAGS))
|
||||
endif
|
||||
|
||||
ifeq ($(silence),s)
|
||||
ifneq ($(findstring s,$(short-opts)),)
|
||||
quiet=silent_
|
||||
KBUILD_VERBOSE = 0
|
||||
override KBUILD_VERBOSE :=
|
||||
endif
|
||||
|
||||
export quiet Q KBUILD_VERBOSE
|
||||
@@ -211,14 +203,6 @@ ifneq ($(words $(subst :, ,$(abs_srctree))), 1)
|
||||
$(error source directory cannot contain spaces or colons)
|
||||
endif
|
||||
|
||||
ifneq ($(abs_srctree),$(abs_objtree))
|
||||
# Look for make include files relative to root of kernel src
|
||||
#
|
||||
# --included-dir is added for backward compatibility, but you should not rely on
|
||||
# it. Please add $(srctree)/ prefix to include Makefiles in the source tree.
|
||||
MAKEFLAGS += --include-dir=$(abs_srctree)
|
||||
endif
|
||||
|
||||
ifneq ($(filter 3.%,$(MAKE_VERSION)),)
|
||||
# 'MAKEFLAGS += -rR' does not immediately become effective for GNU Make 3.x
|
||||
# We need to invoke sub-make to avoid implicit rules in the top Makefile.
|
||||
@@ -290,7 +274,8 @@ no-dot-config-targets := $(clean-targets) \
|
||||
cscope gtags TAGS tags help% %docs check% coccicheck \
|
||||
$(version_h) headers headers_% archheaders archscripts \
|
||||
%asm-generic kernelversion %src-pkg dt_binding_check \
|
||||
outputmakefile rustavailable rustfmt rustfmtcheck
|
||||
outputmakefile rustavailable rustfmt rustfmtcheck \
|
||||
scripts_package
|
||||
# Installation targets should not require compiler. Unfortunately, vdso_install
|
||||
# is an exception where build artifacts may be updated. This must be fixed.
|
||||
no-compiler-targets := $(no-dot-config-targets) install dtbs_install \
|
||||
@@ -577,7 +562,7 @@ KBUILD_CFLAGS := -Wall -Wundef -Werror=strict-prototypes -Wno-trigraphs \
|
||||
-std=gnu11
|
||||
KBUILD_CPPFLAGS := -D__KERNEL__
|
||||
KBUILD_RUSTFLAGS := $(rust_common_flags) \
|
||||
--target=$(objtree)/rust/target.json \
|
||||
--target=$(objtree)/scripts/target.json \
|
||||
-Cpanic=abort -Cembed-bitcode=n -Clto=n \
|
||||
-Cforce-unwind-tables=n -Ccodegen-units=1 \
|
||||
-Csymbol-mangling-version=v0 \
|
||||
@@ -878,7 +863,6 @@ KBUILD_RUSTFLAGS-$(CONFIG_WERROR) += -Dwarnings
|
||||
KBUILD_RUSTFLAGS += $(KBUILD_RUSTFLAGS-y)
|
||||
|
||||
ifdef CONFIG_CC_IS_CLANG
|
||||
KBUILD_CPPFLAGS += -Qunused-arguments
|
||||
# The kernel builds with '-std=gnu11' so use of GNU extensions is acceptable.
|
||||
KBUILD_CFLAGS += -Wno-gnu
|
||||
else
|
||||
@@ -921,7 +905,9 @@ ifdef CONFIG_INIT_STACK_ALL_ZERO
|
||||
KBUILD_CFLAGS += -ftrivial-auto-var-init=zero
|
||||
ifdef CONFIG_CC_HAS_AUTO_VAR_INIT_ZERO_ENABLER
|
||||
# https://github.com/llvm/llvm-project/issues/44842
|
||||
KBUILD_CFLAGS += -enable-trivial-auto-var-init-zero-knowing-it-will-be-removed-from-clang
|
||||
CC_AUTO_VAR_INIT_ZERO_ENABLER := -enable-trivial-auto-var-init-zero-knowing-it-will-be-removed-from-clang
|
||||
export CC_AUTO_VAR_INIT_ZERO_ENABLER
|
||||
KBUILD_CFLAGS += $(CC_AUTO_VAR_INIT_ZERO_ENABLER)
|
||||
endif
|
||||
endif
|
||||
|
||||
@@ -1267,8 +1253,11 @@ vmlinux: vmlinux.o $(KBUILD_LDS) modpost
|
||||
# make sure no implicit rule kicks in
|
||||
$(sort $(KBUILD_LDS) $(KBUILD_VMLINUX_OBJS) $(KBUILD_VMLINUX_LIBS)): . ;
|
||||
|
||||
filechk_kernel.release = \
|
||||
echo "$(KERNELVERSION)$$($(CONFIG_SHELL) $(srctree)/scripts/setlocalversion $(srctree))"
|
||||
ifeq ($(origin KERNELRELEASE),file)
|
||||
filechk_kernel.release = $(srctree)/scripts/setlocalversion $(srctree)
|
||||
else
|
||||
filechk_kernel.release = echo $(KERNELRELEASE)
|
||||
endif
|
||||
|
||||
# Store (new) KERNELRELEASE string in include/config/kernel.release
|
||||
include/config/kernel.release: FORCE
|
||||
@@ -1545,7 +1534,7 @@ endif
|
||||
# Build modules
|
||||
#
|
||||
|
||||
# *.ko are usually independent of vmlinux, but CONFIG_DEBUG_INFOBTF_MODULES
|
||||
# *.ko are usually independent of vmlinux, but CONFIG_DEBUG_INFO_BTF_MODULES
|
||||
# is an exception.
|
||||
ifdef CONFIG_DEBUG_INFO_BTF_MODULES
|
||||
KBUILD_BUILTIN := 1
|
||||
@@ -1617,7 +1606,7 @@ MRPROPER_FILES += include/config include/generated \
|
||||
certs/x509.genkey \
|
||||
vmlinux-gdb.py \
|
||||
*.spec \
|
||||
rust/target.json rust/libmacros.so
|
||||
rust/libmacros.so
|
||||
|
||||
# clean - Delete most, but leave enough to build external modules
|
||||
#
|
||||
@@ -1667,6 +1656,10 @@ distclean: mrproper
|
||||
%pkg: include/config/kernel.release FORCE
|
||||
$(Q)$(MAKE) -f $(srctree)/scripts/Makefile.package $@
|
||||
|
||||
PHONY += scripts_package
|
||||
scripts_package: scripts_basic
|
||||
$(Q)$(MAKE) $(build)=scripts scripts/list-gitignored
|
||||
|
||||
# Brief documentation of the typical targets used
|
||||
# ---------------------------------------------------------------------------
|
||||
|
||||
@@ -1782,8 +1775,9 @@ help:
|
||||
printf " %-16s - Show all of the above\\n" help-boards; \
|
||||
echo '')
|
||||
|
||||
@echo ' make V=0|1 [targets] 0 => quiet build (default), 1 => verbose build'
|
||||
@echo ' make V=2 [targets] 2 => give reason for rebuild of target'
|
||||
@echo ' make V=n [targets] 1: verbose build'
|
||||
@echo ' 2: give reason for rebuild of target'
|
||||
@echo ' V=1 and V=2 can be combined with V=12'
|
||||
@echo ' make O=dir [targets] Locate all output files in "dir", including .config'
|
||||
@echo ' make C=1 [targets] Check re-compiled c source with $$CHECK'
|
||||
@echo ' (sparse by default)'
|
||||
@@ -1875,6 +1869,12 @@ rust-analyzer:
|
||||
# Misc
|
||||
# ---------------------------------------------------------------------------
|
||||
|
||||
PHONY += misc-check
|
||||
misc-check:
|
||||
$(Q)$(srctree)/scripts/misc-check
|
||||
|
||||
all: misc-check
|
||||
|
||||
PHONY += scripts_gdb
|
||||
scripts_gdb: prepare0
|
||||
$(Q)$(MAKE) $(build)=scripts/gdb
|
||||
@@ -2046,11 +2046,12 @@ clean: $(clean-dirs)
|
||||
-o -name '*.lex.c' -o -name '*.tab.[ch]' \
|
||||
-o -name '*.asn1.[ch]' \
|
||||
-o -name '*.symtypes' -o -name 'modules.order' \
|
||||
-o -name '.tmp_*' \
|
||||
-o -name '*.c.[012]*.*' \
|
||||
-o -name '*.ll' \
|
||||
-o -name '*.gcno' \
|
||||
-o -name '*.*.symversions' \) -type f -print | xargs rm -f
|
||||
-o -name '*.*.symversions' \) -type f -print \
|
||||
-o -name '.tmp_*' -print \
|
||||
| xargs rm -rf
|
||||
|
||||
# Generate tags for editors
|
||||
# ---------------------------------------------------------------------------
|
||||
@@ -2132,7 +2133,7 @@ checkstack:
|
||||
$(PERL) $(srctree)/scripts/checkstack.pl $(CHECKSTACK_ARCH)
|
||||
|
||||
kernelrelease:
|
||||
@echo "$(KERNELVERSION)$$($(CONFIG_SHELL) $(srctree)/scripts/setlocalversion $(srctree))"
|
||||
@$(filechk_kernel.release)
|
||||
|
||||
kernelversion:
|
||||
@echo $(KERNELVERSION)
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
#
|
||||
# Copyright 2009 Simtec Electronics
|
||||
|
||||
include $(src)/Makefile.s3c64xx
|
||||
include $(srctree)/$(src)/Makefile.s3c64xx
|
||||
|
||||
# Objects we always build independent of SoC choice
|
||||
|
||||
|
||||
@@ -43,4 +43,4 @@ obj-$(CONFIG_ELF_CORE) += elfcore.o
|
||||
CFLAGS_traps.o += -mfixed-range=f2-f5,f16-f31
|
||||
|
||||
# The gate DSO image is built using a special linker script.
|
||||
include $(src)/Makefile.gate
|
||||
include $(srctree)/$(src)/Makefile.gate
|
||||
|
||||
@@ -7,7 +7,7 @@ subdir-ccflags-y := -Werror
|
||||
endif
|
||||
|
||||
# platform specific definitions
|
||||
include arch/mips/Kbuild.platforms
|
||||
include $(srctree)/arch/mips/Kbuild.platforms
|
||||
obj-y := $(platform-y)
|
||||
|
||||
# make clean traverses $(obj-) without having included .config, so
|
||||
|
||||
@@ -95,7 +95,7 @@ all-$(CONFIG_SYS_SUPPORTS_ZBOOT)+= vmlinuz
|
||||
# crossformat linking we rely on the elf2ecoff tool for format conversion.
|
||||
#
|
||||
cflags-y += -G 0 -mno-abicalls -fno-pic -pipe
|
||||
cflags-y += -msoft-float
|
||||
cflags-y += -msoft-float -Wa,-msoft-float
|
||||
LDFLAGS_vmlinux += -G 0 -static -n -nostdlib
|
||||
KBUILD_AFLAGS_MODULE += -mlong-calls
|
||||
KBUILD_CFLAGS_MODULE += -mlong-calls
|
||||
@@ -104,15 +104,6 @@ ifeq ($(CONFIG_RELOCATABLE),y)
|
||||
LDFLAGS_vmlinux += --emit-relocs
|
||||
endif
|
||||
|
||||
#
|
||||
# pass -msoft-float to GAS if it supports it. However on newer binutils
|
||||
# (specifically newer than 2.24.51.20140728) we then also need to explicitly
|
||||
# set ".set hardfloat" in all files which manipulate floating point registers.
|
||||
#
|
||||
ifneq ($(call as-option,-Wa$(comma)-msoft-float,),)
|
||||
cflags-y += -DGAS_HAS_SET_HARDFLOAT -Wa,-msoft-float
|
||||
endif
|
||||
|
||||
cflags-y += -ffreestanding
|
||||
|
||||
cflags-$(CONFIG_CPU_BIG_ENDIAN) += -EB
|
||||
@@ -152,7 +143,7 @@ cflags-y += -fno-stack-check
|
||||
#
|
||||
# Avoid this by explicitly disabling that assembler behaviour.
|
||||
#
|
||||
cflags-y += $(call as-option,-Wa$(comma)-mno-fix-loongson3-llsc,)
|
||||
cflags-y += $(call cc-option,-Wa$(comma)-mno-fix-loongson3-llsc,)
|
||||
|
||||
#
|
||||
# CPU-dependent compiler/assembler options for optimization.
|
||||
|
||||
@@ -10,7 +10,7 @@ PHONY := __archpost
|
||||
__archpost:
|
||||
|
||||
-include include/config/auto.conf
|
||||
include scripts/Kbuild.include
|
||||
include $(srctree)/scripts/Kbuild.include
|
||||
|
||||
CMD_LS3_LLSC = arch/mips/tools/loongson3-llsc-check
|
||||
quiet_cmd_ls3_llsc = LLSCCHK $@
|
||||
|
||||
@@ -15,7 +15,7 @@
|
||||
|
||||
.macro fpu_save_single thread tmp=t0
|
||||
.set push
|
||||
SET_HARDFLOAT
|
||||
.set hardfloat
|
||||
cfc1 \tmp, fcr31
|
||||
s.d $f0, THREAD_FPR0(\thread)
|
||||
s.d $f2, THREAD_FPR2(\thread)
|
||||
@@ -39,7 +39,7 @@
|
||||
|
||||
.macro fpu_restore_single thread tmp=t0
|
||||
.set push
|
||||
SET_HARDFLOAT
|
||||
.set hardfloat
|
||||
lw \tmp, THREAD_FCR31(\thread)
|
||||
l.d $f0, THREAD_FPR0(\thread)
|
||||
l.d $f2, THREAD_FPR2(\thread)
|
||||
|
||||
@@ -83,7 +83,7 @@
|
||||
|
||||
.macro fpu_save_16even thread tmp=t0
|
||||
.set push
|
||||
SET_HARDFLOAT
|
||||
.set hardfloat
|
||||
cfc1 \tmp, fcr31
|
||||
sdc1 $f0, THREAD_FPR0(\thread)
|
||||
sdc1 $f2, THREAD_FPR2(\thread)
|
||||
@@ -109,7 +109,7 @@
|
||||
.set push
|
||||
.set mips64r2
|
||||
.set fp=64
|
||||
SET_HARDFLOAT
|
||||
.set hardfloat
|
||||
sdc1 $f1, THREAD_FPR1(\thread)
|
||||
sdc1 $f3, THREAD_FPR3(\thread)
|
||||
sdc1 $f5, THREAD_FPR5(\thread)
|
||||
@@ -142,7 +142,7 @@
|
||||
|
||||
.macro fpu_restore_16even thread tmp=t0
|
||||
.set push
|
||||
SET_HARDFLOAT
|
||||
.set hardfloat
|
||||
lw \tmp, THREAD_FCR31(\thread)
|
||||
ldc1 $f0, THREAD_FPR0(\thread)
|
||||
ldc1 $f2, THREAD_FPR2(\thread)
|
||||
@@ -168,7 +168,7 @@
|
||||
.set push
|
||||
.set mips64r2
|
||||
.set fp=64
|
||||
SET_HARDFLOAT
|
||||
.set hardfloat
|
||||
ldc1 $f1, THREAD_FPR1(\thread)
|
||||
ldc1 $f3, THREAD_FPR3(\thread)
|
||||
ldc1 $f5, THREAD_FPR5(\thread)
|
||||
@@ -373,7 +373,7 @@
|
||||
.macro _cfcmsa rd, cs
|
||||
.set push
|
||||
.set noat
|
||||
SET_HARDFLOAT
|
||||
.set hardfloat
|
||||
insn_if_mips 0x787e0059 | (\cs << 11)
|
||||
insn32_if_mm 0x587e0056 | (\cs << 11)
|
||||
move \rd, $1
|
||||
@@ -383,7 +383,7 @@
|
||||
.macro _ctcmsa cd, rs
|
||||
.set push
|
||||
.set noat
|
||||
SET_HARDFLOAT
|
||||
.set hardfloat
|
||||
move $1, \rs
|
||||
insn_if_mips 0x783e0819 | (\cd << 6)
|
||||
insn32_if_mm 0x583e0816 | (\cd << 6)
|
||||
@@ -393,7 +393,7 @@
|
||||
.macro ld_b wd, off, base
|
||||
.set push
|
||||
.set noat
|
||||
SET_HARDFLOAT
|
||||
.set hardfloat
|
||||
PTR_ADDU $1, \base, \off
|
||||
insn_if_mips 0x78000820 | (\wd << 6)
|
||||
insn32_if_mm 0x58000807 | (\wd << 6)
|
||||
@@ -403,7 +403,7 @@
|
||||
.macro ld_h wd, off, base
|
||||
.set push
|
||||
.set noat
|
||||
SET_HARDFLOAT
|
||||
.set hardfloat
|
||||
PTR_ADDU $1, \base, \off
|
||||
insn_if_mips 0x78000821 | (\wd << 6)
|
||||
insn32_if_mm 0x58000817 | (\wd << 6)
|
||||
@@ -413,7 +413,7 @@
|
||||
.macro ld_w wd, off, base
|
||||
.set push
|
||||
.set noat
|
||||
SET_HARDFLOAT
|
||||
.set hardfloat
|
||||
PTR_ADDU $1, \base, \off
|
||||
insn_if_mips 0x78000822 | (\wd << 6)
|
||||
insn32_if_mm 0x58000827 | (\wd << 6)
|
||||
@@ -423,7 +423,7 @@
|
||||
.macro ld_d wd, off, base
|
||||
.set push
|
||||
.set noat
|
||||
SET_HARDFLOAT
|
||||
.set hardfloat
|
||||
PTR_ADDU $1, \base, \off
|
||||
insn_if_mips 0x78000823 | (\wd << 6)
|
||||
insn32_if_mm 0x58000837 | (\wd << 6)
|
||||
@@ -433,7 +433,7 @@
|
||||
.macro st_b wd, off, base
|
||||
.set push
|
||||
.set noat
|
||||
SET_HARDFLOAT
|
||||
.set hardfloat
|
||||
PTR_ADDU $1, \base, \off
|
||||
insn_if_mips 0x78000824 | (\wd << 6)
|
||||
insn32_if_mm 0x5800080f | (\wd << 6)
|
||||
@@ -443,7 +443,7 @@
|
||||
.macro st_h wd, off, base
|
||||
.set push
|
||||
.set noat
|
||||
SET_HARDFLOAT
|
||||
.set hardfloat
|
||||
PTR_ADDU $1, \base, \off
|
||||
insn_if_mips 0x78000825 | (\wd << 6)
|
||||
insn32_if_mm 0x5800081f | (\wd << 6)
|
||||
@@ -453,7 +453,7 @@
|
||||
.macro st_w wd, off, base
|
||||
.set push
|
||||
.set noat
|
||||
SET_HARDFLOAT
|
||||
.set hardfloat
|
||||
PTR_ADDU $1, \base, \off
|
||||
insn_if_mips 0x78000826 | (\wd << 6)
|
||||
insn32_if_mm 0x5800082f | (\wd << 6)
|
||||
@@ -463,7 +463,7 @@
|
||||
.macro st_d wd, off, base
|
||||
.set push
|
||||
.set noat
|
||||
SET_HARDFLOAT
|
||||
.set hardfloat
|
||||
PTR_ADDU $1, \base, \off
|
||||
insn_if_mips 0x78000827 | (\wd << 6)
|
||||
insn32_if_mm 0x5800083f | (\wd << 6)
|
||||
@@ -473,7 +473,7 @@
|
||||
.macro copy_s_w ws, n
|
||||
.set push
|
||||
.set noat
|
||||
SET_HARDFLOAT
|
||||
.set hardfloat
|
||||
insn_if_mips 0x78b00059 | (\n << 16) | (\ws << 11)
|
||||
insn32_if_mm 0x58b00056 | (\n << 16) | (\ws << 11)
|
||||
.set pop
|
||||
@@ -482,7 +482,7 @@
|
||||
.macro copy_s_d ws, n
|
||||
.set push
|
||||
.set noat
|
||||
SET_HARDFLOAT
|
||||
.set hardfloat
|
||||
insn_if_mips 0x78b80059 | (\n << 16) | (\ws << 11)
|
||||
insn32_if_mm 0x58b80056 | (\n << 16) | (\ws << 11)
|
||||
.set pop
|
||||
@@ -491,7 +491,7 @@
|
||||
.macro insert_w wd, n
|
||||
.set push
|
||||
.set noat
|
||||
SET_HARDFLOAT
|
||||
.set hardfloat
|
||||
insn_if_mips 0x79300819 | (\n << 16) | (\wd << 6)
|
||||
insn32_if_mm 0x59300816 | (\n << 16) | (\wd << 6)
|
||||
.set pop
|
||||
@@ -500,7 +500,7 @@
|
||||
.macro insert_d wd, n
|
||||
.set push
|
||||
.set noat
|
||||
SET_HARDFLOAT
|
||||
.set hardfloat
|
||||
insn_if_mips 0x79380819 | (\n << 16) | (\wd << 6)
|
||||
insn32_if_mm 0x59380816 | (\n << 16) | (\wd << 6)
|
||||
.set pop
|
||||
@@ -553,7 +553,7 @@
|
||||
st_d 29, THREAD_FPR29 - FPR_BASE_OFFS, FPR_BASE
|
||||
st_d 30, THREAD_FPR30 - FPR_BASE_OFFS, FPR_BASE
|
||||
st_d 31, THREAD_FPR31 - FPR_BASE_OFFS, FPR_BASE
|
||||
SET_HARDFLOAT
|
||||
.set hardfloat
|
||||
_cfcmsa $1, MSA_CSR
|
||||
sw $1, THREAD_MSA_CSR(\thread)
|
||||
.set pop
|
||||
@@ -562,7 +562,7 @@
|
||||
.macro msa_restore_all thread
|
||||
.set push
|
||||
.set noat
|
||||
SET_HARDFLOAT
|
||||
.set hardfloat
|
||||
lw $1, THREAD_MSA_CSR(\thread)
|
||||
_ctcmsa MSA_CSR, $1
|
||||
#ifdef TOOLCHAIN_SUPPORTS_MSA
|
||||
@@ -618,7 +618,7 @@
|
||||
.macro msa_init_all_upper
|
||||
.set push
|
||||
.set noat
|
||||
SET_HARDFLOAT
|
||||
.set hardfloat
|
||||
not $1, zero
|
||||
msa_init_upper 0
|
||||
msa_init_upper 1
|
||||
|
||||
@@ -14,20 +14,6 @@
|
||||
|
||||
#include <asm/sgidefs.h>
|
||||
|
||||
/*
|
||||
* starting with binutils 2.24.51.20140729, MIPS binutils warn about mixing
|
||||
* hardfloat and softfloat object files. The kernel build uses soft-float by
|
||||
* default, so we also need to pass -msoft-float along to GAS if it supports it.
|
||||
* But this in turn causes assembler errors in files which access hardfloat
|
||||
* registers. We detect if GAS supports "-msoft-float" in the Makefile and
|
||||
* explicitly put ".set hardfloat" where floating point registers are touched.
|
||||
*/
|
||||
#ifdef GAS_HAS_SET_HARDFLOAT
|
||||
#define SET_HARDFLOAT .set hardfloat
|
||||
#else
|
||||
#define SET_HARDFLOAT
|
||||
#endif
|
||||
|
||||
#if _MIPS_SIM == _MIPS_SIM_ABI32
|
||||
|
||||
/*
|
||||
|
||||
@@ -2367,7 +2367,7 @@ do { \
|
||||
/*
|
||||
* Macros to access the floating point coprocessor control registers
|
||||
*/
|
||||
#define _read_32bit_cp1_register(source, gas_hardfloat) \
|
||||
#define read_32bit_cp1_register(source) \
|
||||
({ \
|
||||
unsigned int __res; \
|
||||
\
|
||||
@@ -2377,36 +2377,24 @@ do { \
|
||||
" # gas fails to assemble cfc1 for some archs, \n" \
|
||||
" # like Octeon. \n" \
|
||||
" .set mips1 \n" \
|
||||
" "STR(gas_hardfloat)" \n" \
|
||||
" .set hardfloat \n" \
|
||||
" cfc1 %0,"STR(source)" \n" \
|
||||
" .set pop \n" \
|
||||
: "=r" (__res)); \
|
||||
__res; \
|
||||
})
|
||||
|
||||
#define _write_32bit_cp1_register(dest, val, gas_hardfloat) \
|
||||
#define write_32bit_cp1_register(dest, val) \
|
||||
do { \
|
||||
__asm__ __volatile__( \
|
||||
" .set push \n" \
|
||||
" .set reorder \n" \
|
||||
" "STR(gas_hardfloat)" \n" \
|
||||
" .set hardfloat \n" \
|
||||
" ctc1 %0,"STR(dest)" \n" \
|
||||
" .set pop \n" \
|
||||
: : "r" (val)); \
|
||||
} while (0)
|
||||
|
||||
#ifdef GAS_HAS_SET_HARDFLOAT
|
||||
#define read_32bit_cp1_register(source) \
|
||||
_read_32bit_cp1_register(source, .set hardfloat)
|
||||
#define write_32bit_cp1_register(dest, val) \
|
||||
_write_32bit_cp1_register(dest, val, .set hardfloat)
|
||||
#else
|
||||
#define read_32bit_cp1_register(source) \
|
||||
_read_32bit_cp1_register(source, )
|
||||
#define write_32bit_cp1_register(dest, val) \
|
||||
_write_32bit_cp1_register(dest, val, )
|
||||
#endif
|
||||
|
||||
#ifdef TOOLCHAIN_SUPPORTS_DSP
|
||||
#define rddsp(mask) \
|
||||
({ \
|
||||
|
||||
@@ -480,7 +480,7 @@ NESTED(nmi_handler, PT_SIZE, sp)
|
||||
.set push
|
||||
/* gas fails to assemble cfc1 for some archs (octeon).*/ \
|
||||
.set mips1
|
||||
SET_HARDFLOAT
|
||||
.set hardfloat
|
||||
cfc1 a1, fcr31
|
||||
.set pop
|
||||
.endm
|
||||
|
||||
@@ -64,7 +64,7 @@ LEAF(_restore_fp)
|
||||
*/
|
||||
LEAF(_save_fp_context)
|
||||
.set push
|
||||
SET_HARDFLOAT
|
||||
.set hardfloat
|
||||
li v0, 0 # assume success
|
||||
cfc1 t1, fcr31
|
||||
EX2(s.d $f0, 0(a0))
|
||||
@@ -98,7 +98,7 @@ LEAF(_save_fp_context)
|
||||
*/
|
||||
LEAF(_restore_fp_context)
|
||||
.set push
|
||||
SET_HARDFLOAT
|
||||
.set hardfloat
|
||||
li v0, 0 # assume success
|
||||
EX(lw t0, (a1))
|
||||
EX2(l.d $f0, 0(a0))
|
||||
|
||||
@@ -26,7 +26,7 @@
|
||||
|
||||
.macro EX insn, reg, src
|
||||
.set push
|
||||
SET_HARDFLOAT
|
||||
.set hardfloat
|
||||
.set nomacro
|
||||
.ex\@: \insn \reg, \src
|
||||
.set pop
|
||||
@@ -98,14 +98,14 @@ LEAF(_init_msa_upper)
|
||||
*/
|
||||
LEAF(_save_fp_context)
|
||||
.set push
|
||||
SET_HARDFLOAT
|
||||
.set hardfloat
|
||||
cfc1 t1, fcr31
|
||||
.set pop
|
||||
|
||||
#if defined(CONFIG_64BIT) || defined(CONFIG_CPU_MIPSR2) || \
|
||||
defined(CONFIG_CPU_MIPSR5) || defined(CONFIG_CPU_MIPSR6)
|
||||
.set push
|
||||
SET_HARDFLOAT
|
||||
.set hardfloat
|
||||
#if defined(CONFIG_CPU_MIPSR2) || defined(CONFIG_CPU_MIPSR5)
|
||||
.set mips32r2
|
||||
.set fp=64
|
||||
@@ -135,7 +135,7 @@ LEAF(_save_fp_context)
|
||||
#endif
|
||||
|
||||
.set push
|
||||
SET_HARDFLOAT
|
||||
.set hardfloat
|
||||
/* Store the 16 even double precision registers */
|
||||
EX sdc1 $f0, 0(a0)
|
||||
EX sdc1 $f2, 16(a0)
|
||||
@@ -173,7 +173,7 @@ LEAF(_restore_fp_context)
|
||||
#if defined(CONFIG_64BIT) || defined(CONFIG_CPU_MIPSR2) || \
|
||||
defined(CONFIG_CPU_MIPSR5) || defined(CONFIG_CPU_MIPSR6)
|
||||
.set push
|
||||
SET_HARDFLOAT
|
||||
.set hardfloat
|
||||
#if defined(CONFIG_CPU_MIPSR2) || defined(CONFIG_CPU_MIPSR5)
|
||||
.set mips32r2
|
||||
.set fp=64
|
||||
@@ -201,7 +201,7 @@ LEAF(_restore_fp_context)
|
||||
1: .set pop
|
||||
#endif
|
||||
.set push
|
||||
SET_HARDFLOAT
|
||||
.set hardfloat
|
||||
EX ldc1 $f0, 0(a0)
|
||||
EX ldc1 $f2, 16(a0)
|
||||
EX ldc1 $f4, 32(a0)
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user