From: Alexey Dobriyan <adobriyan@gmail.com>
To: akpm@linux-foundation.org
Cc: linux-kernel@vger.kernel.org
Subject: [PATCH] kbuild: simpler generation of constants for assembly
Date: Sat, 21 May 2016 01:27:36 +0300 [thread overview]
Message-ID: <20160520222735.GA14445@p183.telecom.by> (raw)
Instead of showing how cool sed(1) invocation could be, rely on the fact
that gcc doesn't really look inside "asm" statement body and more or less
directly emits it into assembly. Pretend "#define" is an instruction.
%a prints integer as plain integer without '$' or other characters.
C++ comment takes care of trailing '#' character nobody asked for.
Remove empty lines in generated file while I'm at it.
Signed-off-by: Alexey Dobriyan <adobriyan@gmail.com>
---
NOT compile tested on ia64.
Compile tested on arm.
Kbuild | 12 +-----------
arch/ia64/kernel/Makefile | 8 +-------
include/linux/kbuild.h | 2 +-
scripts/mod/Makefile | 11 +----------
4 files changed, 4 insertions(+), 29 deletions(-)
--- a/Kbuild
+++ b/Kbuild
@@ -6,14 +6,6 @@
# 3) Generate asm-offsets.h (may need bounds.h and timeconst.h)
# 4) Check for missing system calls
-# Default sed regexp - multiline due to syntax constraints
-define sed-y
- "/^->/{s:->#\(.*\):/* \1 */:; \
- s:^->\([^ ]*\) [\$$#]*\([-0-9]*\) \(.*\):#define \1 \2 /* \3 */:; \
- s:^->\([^ ]*\) [\$$#]*\([^ ]*\) \(.*\):#define \1 \2 /* \3 */:; \
- s:->::; p;}"
-endef
-
# Use filechk to avoid rebuilds when a header changes, but the resulting file
# does not
define filechk_offsets
@@ -25,9 +17,7 @@ define filechk_offsets
echo " *"; \
echo " * This file was generated by Kbuild"; \
echo " */"; \
- echo ""; \
- sed -ne $(sed-y); \
- echo ""; \
+ sed -ne '/#define/p'; \
echo "#endif" )
endef
--- a/arch/ia64/kernel/Makefile
+++ b/arch/ia64/kernel/Makefile
@@ -50,10 +50,6 @@ CFLAGS_traps.o += -mfixed-range=f2-f5,f16-f31
# The gate DSO image is built using a special linker script.
include $(src)/Makefile.gate
-# Calculate NR_IRQ = max(IA64_NATIVE_NR_IRQS, XEN_NR_IRQS, ...) based on config
-define sed-y
- "/^->/{s:^->\([^ ]*\) [\$$#]*\([^ ]*\) \(.*\):#define \1 \2 /* \3 */:; s:->::; p;}"
-endef
quiet_cmd_nr_irqs = GEN $@
define cmd_nr_irqs
(set -e; \
@@ -65,9 +61,7 @@ define cmd_nr_irqs
echo " * This file was generated by Kbuild"; \
echo " *"; \
echo " */"; \
- echo ""; \
- sed -ne $(sed-y) $<; \
- echo ""; \
+ sed -ne '/#define/p' $<; \
echo "#endif" ) > $@
endef
--- a/include/linux/kbuild.h
+++ b/include/linux/kbuild.h
@@ -2,7 +2,7 @@
#define __LINUX_KBUILD_H
#define DEFINE(sym, val) \
- asm volatile("\n->" #sym " %0 " #val : : "i" (val))
+ asm volatile ("#define " #sym " %a0 //" #val :: "i" (val))
#define BLANK() asm volatile("\n->" : : )
--- a/scripts/mod/Makefile
+++ b/scripts/mod/Makefile
@@ -7,13 +7,6 @@ modpost-objs := modpost.o file2alias.o sumversion.o
devicetable-offsets-file := devicetable-offsets.h
-define sed-y
- "/^->/{s:->#\(.*\):/* \1 */:; \
- s:^->\([^ ]*\) [\$$#]*\([-0-9]*\) \(.*\):#define \1 \2 /* \3 */:; \
- s:^->\([^ ]*\) [\$$#]*\([^ ]*\) \(.*\):#define \1 \2 /* \3 */:; \
- s:->::; p;}"
-endef
-
quiet_cmd_offsets = GEN $@
define cmd_offsets
(set -e; \
@@ -25,9 +18,7 @@ define cmd_offsets
echo " * This file was generated by Kbuild"; \
echo " *"; \
echo " */"; \
- echo ""; \
- sed -ne $(sed-y) $<; \
- echo ""; \
+ sed -ne '/#define/p' $<; \
echo "#endif" ) > $@
endef
next reply other threads:[~2016-05-20 22:27 UTC|newest]
Thread overview: 3+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-05-20 22:27 Alexey Dobriyan [this message]
2016-06-02 23:24 ` Andrew Morton
2016-06-10 11:13 ` Alexey Dobriyan
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20160520222735.GA14445@p183.telecom.by \
--to=adobriyan@gmail.com \
--cc=akpm@linux-foundation.org \
--cc=linux-kernel@vger.kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
all inboxes | Powered by JetHome®