162306a36Sopenharmony_ci# SPDX-License-Identifier: GPL-2.0 262306a36Sopenharmony_ci 362306a36Sopenharmony_ciobj-$(CONFIG_SPU_FS) += spufs.o 462306a36Sopenharmony_cispufs-y += inode.o file.o context.o syscalls.o 562306a36Sopenharmony_cispufs-y += sched.o backing_ops.o hw_ops.o run.o gang.o 662306a36Sopenharmony_cispufs-y += switch.o fault.o lscsa_alloc.o 762306a36Sopenharmony_cispufs-$(CONFIG_COREDUMP) += coredump.o 862306a36Sopenharmony_ci 962306a36Sopenharmony_ci# magic for the trace events 1062306a36Sopenharmony_ciCFLAGS_sched.o := -I$(src) 1162306a36Sopenharmony_ci 1262306a36Sopenharmony_ci# Rules to build switch.o with the help of SPU tool chain 1362306a36Sopenharmony_ciSPU_CROSS := spu- 1462306a36Sopenharmony_ciSPU_CC := $(SPU_CROSS)gcc 1562306a36Sopenharmony_ciSPU_AS := $(SPU_CROSS)gcc 1662306a36Sopenharmony_ciSPU_LD := $(SPU_CROSS)ld 1762306a36Sopenharmony_ciSPU_OBJCOPY := $(SPU_CROSS)objcopy 1862306a36Sopenharmony_ciSPU_CFLAGS := -O2 -Wall -I$(srctree)/include -D__KERNEL__ 1962306a36Sopenharmony_ciSPU_AFLAGS := -c -D__ASSEMBLY__ -I$(srctree)/include -D__KERNEL__ 2062306a36Sopenharmony_ciSPU_LDFLAGS := -N -Ttext=0x0 2162306a36Sopenharmony_ci 2262306a36Sopenharmony_ci$(obj)/switch.o: $(obj)/spu_save_dump.h $(obj)/spu_restore_dump.h 2362306a36Sopenharmony_ciclean-files := spu_save_dump.h spu_restore_dump.h 2462306a36Sopenharmony_ci 2562306a36Sopenharmony_ci# Compile SPU files 2662306a36Sopenharmony_ci cmd_spu_cc = $(SPU_CC) $(SPU_CFLAGS) -c -o $@ $< 2762306a36Sopenharmony_ciquiet_cmd_spu_cc = SPU_CC $@ 2862306a36Sopenharmony_ci$(obj)/spu_%.o: $(src)/spu_%.c 2962306a36Sopenharmony_ci $(call if_changed,spu_cc) 3062306a36Sopenharmony_ci 3162306a36Sopenharmony_ci# Assemble SPU files 3262306a36Sopenharmony_ci cmd_spu_as = $(SPU_AS) $(SPU_AFLAGS) -o $@ $< 3362306a36Sopenharmony_ciquiet_cmd_spu_as = SPU_AS $@ 3462306a36Sopenharmony_ci$(obj)/spu_%.o: $(src)/spu_%.S 3562306a36Sopenharmony_ci $(call if_changed,spu_as) 3662306a36Sopenharmony_ci 3762306a36Sopenharmony_ci# Link SPU Executables 3862306a36Sopenharmony_ci cmd_spu_ld = $(SPU_LD) $(SPU_LDFLAGS) -o $@ $^ 3962306a36Sopenharmony_ciquiet_cmd_spu_ld = SPU_LD $@ 4062306a36Sopenharmony_ci$(obj)/spu_%: $(obj)/spu_%_crt0.o $(obj)/spu_%.o 4162306a36Sopenharmony_ci $(call if_changed,spu_ld) 4262306a36Sopenharmony_ci 4362306a36Sopenharmony_ci# Copy into binary format 4462306a36Sopenharmony_ci cmd_spu_objcopy = $(SPU_OBJCOPY) -O binary $< $@ 4562306a36Sopenharmony_ciquiet_cmd_spu_objcopy = OBJCOPY $@ 4662306a36Sopenharmony_ci$(obj)/spu_%.bin: $(src)/spu_% 4762306a36Sopenharmony_ci $(call if_changed,spu_objcopy) 4862306a36Sopenharmony_ci 4962306a36Sopenharmony_ci# create C code from ELF executable 5062306a36Sopenharmony_cicmd_hexdump = ( \ 5162306a36Sopenharmony_ci echo "/*" ; \ 5262306a36Sopenharmony_ci echo " * $*_dump.h: Copyright (C) 2005 IBM." ; \ 5362306a36Sopenharmony_ci echo " * Hex-dump auto generated from $*.c." ; \ 5462306a36Sopenharmony_ci echo " * Do not edit!" ; \ 5562306a36Sopenharmony_ci echo " */" ; \ 5662306a36Sopenharmony_ci echo "static unsigned int $*_code[] " \ 5762306a36Sopenharmony_ci "__attribute__((__aligned__(128))) = {" ; \ 5862306a36Sopenharmony_ci hexdump -v -e '"0x" 4/1 "%02x" "," "\n"' $< ; \ 5962306a36Sopenharmony_ci echo "};" ; \ 6062306a36Sopenharmony_ci ) > $@ 6162306a36Sopenharmony_ciquiet_cmd_hexdump = HEXDUMP $@ 6262306a36Sopenharmony_ci$(obj)/%_dump.h: $(obj)/%.bin 6362306a36Sopenharmony_ci $(call if_changed,hexdump) 64