mirror of
https://github.com/edk2-porting/linux-next.git
synced 2024-12-03 19:03:57 +08:00
xen: build infrastructure for generating hypercall depending symbols
Today there are several places in the kernel which build tables containing one entry for each possible Xen hypercall. Create an infrastructure to be able to generate these tables at build time. Based-on-patch-by: Jan Beulich <jbeulich@suse.com> Signed-off-by: Juergen Gross <jgross@suse.com> Reviewed-by: David Vrabel <david.vrabel@citrix.com> Acked-by: Ingo Molnar <mingo@kernel.org> Signed-off-by: David Vrabel <david.vrabel@citrix.com>
This commit is contained in:
parent
b6a473a7e1
commit
9b4ade226f
@ -19,6 +19,9 @@ quiet_cmd_syshdr = SYSHDR $@
|
||||
quiet_cmd_systbl = SYSTBL $@
|
||||
cmd_systbl = $(CONFIG_SHELL) '$(systbl)' $< $@
|
||||
|
||||
quiet_cmd_hypercalls = HYPERCALLS $@
|
||||
cmd_hypercalls = $(CONFIG_SHELL) '$<' $@ $(filter-out $<,$^)
|
||||
|
||||
syshdr_abi_unistd_32 := i386
|
||||
$(uapi)/unistd_32.h: $(syscall32) $(syshdr)
|
||||
$(call if_changed,syshdr)
|
||||
@ -47,10 +50,16 @@ $(out)/syscalls_32.h: $(syscall32) $(systbl)
|
||||
$(out)/syscalls_64.h: $(syscall64) $(systbl)
|
||||
$(call if_changed,systbl)
|
||||
|
||||
$(out)/xen-hypercalls.h: $(srctree)/scripts/xen-hypercalls.sh
|
||||
$(call if_changed,hypercalls)
|
||||
|
||||
$(out)/xen-hypercalls.h: $(srctree)/include/xen/interface/xen*.h
|
||||
|
||||
uapisyshdr-y += unistd_32.h unistd_64.h unistd_x32.h
|
||||
syshdr-y += syscalls_32.h
|
||||
syshdr-$(CONFIG_X86_64) += unistd_32_ia32.h unistd_64_x32.h
|
||||
syshdr-$(CONFIG_X86_64) += syscalls_64.h
|
||||
syshdr-$(CONFIG_XEN) += xen-hypercalls.h
|
||||
|
||||
targets += $(uapisyshdr-y) $(syshdr-y)
|
||||
|
||||
|
12
scripts/xen-hypercalls.sh
Normal file
12
scripts/xen-hypercalls.sh
Normal file
@ -0,0 +1,12 @@
|
||||
#!/bin/sh
|
||||
out="$1"
|
||||
shift
|
||||
in="$@"
|
||||
|
||||
for i in $in; do
|
||||
eval $CPP $LINUXINCLUDE -dD -imacros "$i" -x c /dev/null
|
||||
done | \
|
||||
awk '$1 == "#define" && $2 ~ /__HYPERVISOR_[a-z][a-z_0-9]*/ { v[$3] = $2 }
|
||||
END { print "/* auto-generated by scripts/xen-hypercall.sh */"
|
||||
for (i in v) if (!(v[i] in v))
|
||||
print "HYPERCALL("substr(v[i], 14)")"}' | sort -u >$out
|
Loading…
Reference in New Issue
Block a user