std-lib-y += ./$(PLUGIN_ARCH_DIR)/std/syscalls-64.o sys-proto-types := $(obj)/include/uapi/std/syscall-types.h sys-proto-generic := $(obj)/include/uapi/std/syscall.h sys-codes-generic := $(obj)/include/uapi/std/syscall-codes.h sys-codes = $(obj)/include/uapi/std/syscall-codes-$(1).h sys-proto = $(obj)/include/uapi/std/syscall-$(1).h sys-def = $(PLUGIN_ARCH_DIR)/std/syscalls/syscall_$(1).tbl sys-asm = $(PLUGIN_ARCH_DIR)/std/syscalls-$(1).S sys-asm-common-name = std/syscalls/syscall-common-mips-$(1).S sys-asm-common = $(PLUGIN_ARCH_DIR)/$(sys-asm-common-name) sys-asm-types := $(obj)/include/uapi/std/asm/syscall-types.h sys-exec-tbl = $(PLUGIN_ARCH_DIR)/std/sys-exec-tbl-$(1).c sys-bits := 64 AV := $$$$ define gen-rule-sys-codes $(sys-codes): $(sys-def) $(sys-proto-types) $(call msg-gen, $$@) $(Q) echo "/* Autogenerated, don't edit */" > $$@ $(Q) echo "#ifndef ASM_SYSCALL_CODES_H_$(1)__" >> $$@ $(Q) echo "#define ASM_SYSCALL_CODES_H_$(1)__" >> $$@ $(Q) cat $$< | awk '/^__NR/{SYSN=$(AV)1; \ sub("^__NR", "SYS", SYSN); \ print "\n#ifndef ", $(AV)1; \ print "#define", $(AV)1, $(AV)2; \ print "#endif"; \ print "\n#ifndef ", SYSN; \ print "#define ", SYSN, $(AV)1; \ print "#endif";}' >> $$@ $(Q) echo "#endif /* ASM_SYSCALL_CODES_H_$(1)__ */" >> $$@ endef define gen-rule-sys-proto $(sys-proto): $(sys-def) $(sys-proto-types) $(call msg-gen, $$@) $(Q) echo "/* Autogenerated, don't edit */" > $$@ $(Q) echo "#ifndef ASM_SYSCALL_PROTO_H_$(1)__" >> $$@ $(Q) echo "#define ASM_SYSCALL_PROTO_H_$(1)__" >> $$@ $(Q) echo '#include ' >> $$@ $(Q) echo '#include ' >> $$@ ifeq ($(1),32) $(Q) echo '#include "asm/syscall32.h"' >> $$@ endif $(Q) cat $$< | awk '/^__NR/{print "extern long", $(AV)3, \ substr($(AV)0, index($(AV)0,$(AV)4)), ";"}' >> $$@ $(Q) echo "#endif /* ASM_SYSCALL_PROTO_H_$(1)__ */" >> $$@ endef define gen-rule-sys-asm $(sys-asm): $(sys-def) $(sys-asm-common) $(sys-codes) $(sys-proto) $(sys-proto-types) $(call msg-gen, $$@) $(Q) echo "/* Autogenerated, don't edit */" > $$@ $(Q) echo '#include ' >> $$@ $(Q) echo '#include "$(sys-asm-common-name)"' >> $$@ $(Q) cat $$< | awk '/^__NR/{print "SYSCALL(", $(AV)3, ",", $(AV)2, ")"}' >> $$@ endef define gen-rule-sys-exec-tbl $(sys-exec-tbl): $(sys-def) $(sys-codes) $(sys-proto) $(sys-proto-generic) $(sys-proto-types) $(call msg-gen, $$@) $(Q) echo "/* Autogenerated, don't edit */" > $$@ $(Q) cat $$< | awk '/^__NR/{print \ "SYSCALL(", substr($(AV)3, 5), ",", $(AV)2, ")"}' >> $$@ endef $(sys-codes-generic): $(sys-proto-types) $(call msg-gen, $@) $(Q) echo "/* Autogenerated, don't edit */" > $@ $(Q) echo "#ifndef __ASM_CR_SYSCALL_CODES_H__" >> $@ $(Q) echo "#define __ASM_CR_SYSCALL_CODES_H__" >> $@ $(Q) echo '#include ' >> $@ $(Q) cat $< | awk '/^__NR/{NR32=$$1; \ sub("^__NR", "__NR32", NR32); \ print "\n#ifndef ", NR32; \ print "#define ", NR32, $$2; \ print "#endif";}' >> $@ $(Q) echo "#endif /* __ASM_CR_SYSCALL_CODES_H__ */" >> $@ mrproper-y += $(sys-codes-generic) $(sys-proto-generic): $(strip $(call map,sys-proto,$(sys-bits))) $(sys-proto-types) $(call msg-gen, $@) $(Q) echo "/* Autogenerated, don't edit */" > $@ $(Q) echo "#ifndef __ASM_CR_SYSCALL_PROTO_H__" >> $@ $(Q) echo "#define __ASM_CR_SYSCALL_PROTO_H__" >> $@ $(Q) echo "" >> $@ $(Q) echo '#include ' >> $@ $(Q) echo "" >> $@ $(Q) echo "#endif /* __ASM_CR_SYSCALL_PROTO_H__ */" >> $@ mrproper-y += $(sys-proto-generic) define gen-rule-sys-exec-tbl $(sys-exec-tbl): $(sys-def) $(sys-codes) $(sys-proto) $(sys-proto-generic) $(call msg-gen, $$@) $(Q) echo "/* Autogenerated, don't edit */" > $$@ $(Q) cat $$< | awk '/^__NR/{print \ "SYSCALL(", substr($(AV)3, 5), ",", $(AV)2, ")"}' >> $$@ endef $(eval $(call map,gen-rule-sys-codes,$(sys-bits))) $(eval $(call map,gen-rule-sys-proto,$(sys-bits))) $(eval $(call map,gen-rule-sys-asm,$(sys-bits))) $(eval $(call map,gen-rule-sys-exec-tbl,$(sys-bits))) $(sys-asm-types): $(PLUGIN_ARCH_DIR)/include/asm/syscall-types.h $(call msg-gen, $@) $(Q) ln -s ../../../../../../$(PLUGIN_ARCH_DIR)/include/asm/syscall-types.h $(sys-asm-types) std-headers-deps += $(call sys-codes,$(sys-bits)) std-headers-deps += $(call sys-proto,$(sys-bits)) std-headers-deps += $(call sys-asm,$(sys-bits)) std-headers-deps += $(call sys-exec-tbl,$(sys-bits)) std-headers-deps += $(sys-codes-generic) std-headers-deps += $(sys-proto-generic) std-headers-deps += $(sys-asm-types) mrproper-y += $(std-headers-deps)