Commit 30807ef2 authored by Linus Torvalds's avatar Linus Torvalds

Merge tag 'microblaze-v5.0-rc1' of git://git.monstr.eu/linux-2.6-microblaze

Pull arch/microblaze updates from Michal Simek:

 - Fix multiple Kbuild/Makefile issues

 - Start to use system call table generation

* tag 'microblaze-v5.0-rc1' of git://git.monstr.eu/linux-2.6-microblaze:
  microblaze: remove the explicit removal of system.dtb
  microblaze: fix race condition in building boot images
  microblaze: add linux.bin* and simpleImage.* to PHONY
  microblaze: fix multiple bugs in arch/microblaze/boot/Makefile
  microblaze: move "... is ready" messages to arch/microblaze/Makefile
  microblaze: adjust the help to the real behavior
  microblaze: generate uapi header and system call table files
  microblaze: add system call table generation support
  microblaze: move __NR_syscalls macro from asm/unistd.h
  microblaze: Typo s/use use/use/
parents 507413a5 19d111cc
...@@ -79,21 +79,30 @@ all: linux.bin ...@@ -79,21 +79,30 @@ all: linux.bin
archclean: archclean:
$(Q)$(MAKE) $(clean)=$(boot) $(Q)$(MAKE) $(clean)=$(boot)
linux.bin linux.bin.gz linux.bin.ub: vmlinux archheaders:
$(Q)$(MAKE) $(build)=$(boot) $(boot)/$@ $(Q)$(MAKE) $(build)=arch/microblaze/kernel/syscalls all
simpleImage.%: vmlinux PHONY += linux.bin linux.bin.gz linux.bin.ub
linux.bin.ub linux.bin.gz: linux.bin
linux.bin: vmlinux
linux.bin linux.bin.gz linux.bin.ub:
$(Q)$(MAKE) $(build)=$(boot) $(boot)/$@ $(Q)$(MAKE) $(build)=$(boot) $(boot)/$@
@echo 'Kernel: $(boot)/$@ is ready' ' (#'`cat .version`')'
PHONY += simpleImage.$(DTB)
simpleImage.$(DTB): vmlinux
$(Q)$(MAKE) $(build)=$(boot) $(addprefix $(boot)/$@., ub unstrip strip)
@echo 'Kernel: $(boot)/$@ is ready' ' (#'`cat .version`')'
define archhelp define archhelp
echo '* linux.bin - Create raw binary' echo '* linux.bin - Create raw binary'
echo ' linux.bin.gz - Create compressed raw binary' echo ' linux.bin.gz - Create compressed raw binary'
echo ' linux.bin.ub - Create U-Boot wrapped raw binary' echo ' linux.bin.ub - Create U-Boot wrapped raw binary'
echo ' simpleImage.<dt> - ELF image with $(arch)/boot/dts/<dt>.dts linked in' echo ' simpleImage.<dt> - Create the following images with <dt>.dtb linked in'
echo ' - stripped elf with fdt blob' echo ' simpleImage.<dt> : raw image'
echo ' simpleImage.<dt>.unstrip - full ELF image with fdt blob' echo ' simpleImage.<dt>.ub : raw image with U-Boot header'
echo ' *_defconfig - Select default config from arch/microblaze/configs' echo ' simpleImage.<dt>.unstrip: ELF (identical to vmlinux)'
echo '' echo ' simpleImage.<dt>.strip : stripped ELF'
echo ' Targets with <dt> embed a device tree blob inside the image' echo ' Targets with <dt> embed a device tree blob inside the image'
echo ' These targets support board with firmware that does not' echo ' These targets support board with firmware that does not'
echo ' support passing a device tree directly. Replace <dt> with the' echo ' support passing a device tree directly. Replace <dt> with the'
......
...@@ -3,38 +3,33 @@ ...@@ -3,38 +3,33 @@
# arch/microblaze/boot/Makefile # arch/microblaze/boot/Makefile
# #
targets := linux.bin linux.bin.gz linux.bin.ub simpleImage.% targets := linux.bin linux.bin.gz linux.bin.ub simpleImage.*
OBJCOPYFLAGS := -R .note -R .comment -R .note.gnu.build-id -O binary OBJCOPYFLAGS := -R .note -R .comment -R .note.gnu.build-id -O binary
$(obj)/linux.bin: vmlinux FORCE $(obj)/linux.bin: vmlinux FORCE
$(call if_changed,objcopy) $(call if_changed,objcopy)
@echo 'Kernel: $@ is ready' ' (#'`cat .version`')'
$(obj)/linux.bin.ub: $(obj)/linux.bin FORCE $(obj)/linux.bin.ub: $(obj)/linux.bin FORCE
$(call if_changed,uimage) $(call if_changed,uimage)
@echo 'Kernel: $@ is ready' ' (#'`cat .version`')'
$(obj)/linux.bin.gz: $(obj)/linux.bin FORCE $(obj)/linux.bin.gz: $(obj)/linux.bin FORCE
$(call if_changed,gzip) $(call if_changed,gzip)
@echo 'Kernel: $@ is ready' ' (#'`cat .version`')'
quiet_cmd_cp = CP $< $@$2
cmd_cp = cat $< >$@$2 || (rm -f $@ && echo false)
quiet_cmd_strip = STRIP $< $@$2 quiet_cmd_strip = STRIP $< $@$2
cmd_strip = $(STRIP) -K microblaze_start -K _end -K __log_buf \ cmd_strip = $(STRIP) -K microblaze_start -K _end -K __log_buf \
-K _fdt_start $< -o $@$2 -K _fdt_start $< -o $@$2
UIMAGE_LOADADDR = $(CONFIG_KERNEL_BASE_ADDR) UIMAGE_LOADADDR = $(CONFIG_KERNEL_BASE_ADDR)
UIMAGE_IN = $@
UIMAGE_OUT = $@.ub
$(obj)/simpleImage.%: vmlinux FORCE $(obj)/simpleImage.$(DTB): vmlinux FORCE
$(call if_changed,cp,.unstrip)
$(call if_changed,objcopy) $(call if_changed,objcopy)
$(obj)/simpleImage.$(DTB).ub: $(obj)/simpleImage.$(DTB) FORCE
$(call if_changed,uimage) $(call if_changed,uimage)
$(call if_changed,strip,.strip)
@echo 'Kernel: $(UIMAGE_OUT) is ready' ' (#'`cat .version`')'
clean-files += simpleImage.*.unstrip linux.bin.ub $(obj)/simpleImage.$(DTB).unstrip: vmlinux FORCE
$(call if_changed,shipped)
$(obj)/simpleImage.$(DTB).strip: vmlinux FORCE
$(call if_changed,strip)
...@@ -12,12 +12,9 @@ $(obj)/linked_dtb.o: $(obj)/system.dtb ...@@ -12,12 +12,9 @@ $(obj)/linked_dtb.o: $(obj)/system.dtb
# Generate system.dtb from $(DTB).dtb # Generate system.dtb from $(DTB).dtb
ifneq ($(DTB),system) ifneq ($(DTB),system)
$(obj)/system.dtb: $(obj)/$(DTB).dtb $(obj)/system.dtb: $(obj)/$(DTB).dtb
$(call if_changed,cp) $(call if_changed,shipped)
endif endif
endif endif
quiet_cmd_cp = CP $< $@$2
cmd_cp = cat $< >$@$2 || (rm -f $@ && echo false)
# Rule to build device tree blobs # Rule to build device tree blobs
DTC_FLAGS := -p 1024 DTC_FLAGS := -p 1024
generated-y += syscall_table.h
generic-y += barrier.h generic-y += barrier.h
generic-y += bitops.h generic-y += bitops.h
generic-y += bug.h generic-y += bug.h
......
...@@ -200,7 +200,7 @@ static inline pte_t pte_mkspecial(pte_t pte) { return pte; } ...@@ -200,7 +200,7 @@ static inline pte_t pte_mkspecial(pte_t pte) { return pte; }
* is cleared in the TLB miss handler before the TLB entry is loaded. * is cleared in the TLB miss handler before the TLB entry is loaded.
* - All other bits of the PTE are loaded into TLBLO without * - All other bits of the PTE are loaded into TLBLO without
* * modification, leaving us only the bits 20, 21, 24, 25, 26, 30 for * * modification, leaving us only the bits 20, 21, 24, 25, 26, 30 for
* software PTE bits. We actually use use bits 21, 24, 25, and * software PTE bits. We actually use bits 21, 24, 25, and
* 30 respectively for the software bits: ACCESSED, DIRTY, RW, and * 30 respectively for the software bits: ACCESSED, DIRTY, RW, and
* PRESENT. * PRESENT.
*/ */
......
...@@ -38,6 +38,4 @@ ...@@ -38,6 +38,4 @@
#endif /* __ASSEMBLY__ */ #endif /* __ASSEMBLY__ */
#define __NR_syscalls 401
#endif /* _ASM_MICROBLAZE_UNISTD_H */ #endif /* _ASM_MICROBLAZE_UNISTD_H */
# UAPI Header export list # UAPI Header export list
include include/uapi/asm-generic/Kbuild.asm include include/uapi/asm-generic/Kbuild.asm
generated-y += unistd_32.h
generic-y += bitsperlong.h generic-y += bitsperlong.h
generic-y += bpf_perf_event.h generic-y += bpf_perf_event.h
generic-y += errno.h generic-y += errno.h
......
This diff is collapsed.
This diff is collapsed.
# SPDX-License-Identifier: GPL-2.0
kapi := arch/$(SRCARCH)/include/generated/asm
uapi := arch/$(SRCARCH)/include/generated/uapi/asm
_dummy := $(shell [ -d '$(uapi)' ] || mkdir -p '$(uapi)') \
$(shell [ -d '$(kapi)' ] || mkdir -p '$(kapi)')
syscall := $(srctree)/$(src)/syscall.tbl
syshdr := $(srctree)/$(src)/syscallhdr.sh
systbl := $(srctree)/$(src)/syscalltbl.sh
quiet_cmd_syshdr = SYSHDR $@
cmd_syshdr = $(CONFIG_SHELL) '$(syshdr)' '$<' '$@' \
'$(syshdr_abis_$(basetarget))' \
'$(syshdr_pfx_$(basetarget))' \
'$(syshdr_offset_$(basetarget))'
quiet_cmd_systbl = SYSTBL $@
cmd_systbl = $(CONFIG_SHELL) '$(systbl)' '$<' '$@' \
'$(systbl_abis_$(basetarget))' \
'$(systbl_abi_$(basetarget))' \
'$(systbl_offset_$(basetarget))'
$(uapi)/unistd_32.h: $(syscall) $(syshdr)
$(call if_changed,syshdr)
$(kapi)/syscall_table.h: $(syscall) $(systbl)
$(call if_changed,systbl)
uapisyshdr-y += unistd_32.h
kapisyshdr-y += syscall_table.h
targets += $(uapisyshdr-y) $(kapisyshdr-y)
PHONY += all
all: $(addprefix $(uapi)/,$(uapisyshdr-y))
all: $(addprefix $(kapi)/,$(kapisyshdr-y))
@:
This diff is collapsed.
#!/bin/sh
# SPDX-License-Identifier: GPL-2.0
in="$1"
out="$2"
my_abis=`echo "($3)" | tr ',' '|'`
prefix="$4"
offset="$5"
fileguard=_UAPI_ASM_MICROBLAZE_`basename "$out" | sed \
-e 'y/abcdefghijklmnopqrstuvwxyz/ABCDEFGHIJKLMNOPQRSTUVWXYZ/' \
-e 's/[^A-Z0-9_]/_/g' -e 's/__/_/g'`
grep -E "^[0-9A-Fa-fXx]+[[:space:]]+${my_abis}" "$in" | sort -n | (
printf "#ifndef %s\n" "${fileguard}"
printf "#define %s\n" "${fileguard}"
printf "\n"
nxt=0
while read nr abi name entry ; do
if [ -z "$offset" ]; then
printf "#define __NR_%s%s\t%s\n" \
"${prefix}" "${name}" "${nr}"
else
printf "#define __NR_%s%s\t(%s + %s)\n" \
"${prefix}" "${name}" "${offset}" "${nr}"
fi
nxt=$((nr+1))
done
printf "\n"
printf "#ifdef __KERNEL__\n"
printf "#define __NR_syscalls\t%s\n" "${nxt}"
printf "#endif\n"
printf "\n"
printf "#endif /* %s */" "${fileguard}"
) > "$out"
#!/bin/sh
# SPDX-License-Identifier: GPL-2.0
in="$1"
out="$2"
my_abis=`echo "($3)" | tr ',' '|'`
my_abi="$4"
offset="$5"
emit() {
t_nxt="$1"
t_nr="$2"
t_entry="$3"
while [ $t_nxt -lt $t_nr ]; do
printf "__SYSCALL(%s, sys_ni_syscall, )\n" "${t_nxt}"
t_nxt=$((t_nxt+1))
done
printf "__SYSCALL(%s, %s, )\n" "${t_nxt}" "${t_entry}"
}
grep -E "^[0-9A-Fa-fXx]+[[:space:]]+${my_abis}" "$in" | sort -n | (
nxt=0
if [ -z "$offset" ]; then
offset=0
fi
while read nr abi name entry ; do
emit $((nxt+offset)) $((nr+offset)) $entry
nxt=$((nr+1))
done
) > "$out"
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment