1*4882a593Smuzhiyun# SPDX-License-Identifier: GPL-2.0 2*4882a593Smuzhiyun 3*4882a593Smuzhiyunobj-$(CONFIG_SPU_FS) += spufs.o 4*4882a593Smuzhiyunspufs-y += inode.o file.o context.o syscalls.o 5*4882a593Smuzhiyunspufs-y += sched.o backing_ops.o hw_ops.o run.o gang.o 6*4882a593Smuzhiyunspufs-y += switch.o fault.o lscsa_alloc.o 7*4882a593Smuzhiyunspufs-$(CONFIG_COREDUMP) += coredump.o 8*4882a593Smuzhiyun 9*4882a593Smuzhiyun# magic for the trace events 10*4882a593SmuzhiyunCFLAGS_sched.o := -I$(src) 11*4882a593Smuzhiyun 12*4882a593Smuzhiyun# Rules to build switch.o with the help of SPU tool chain 13*4882a593SmuzhiyunSPU_CROSS := spu- 14*4882a593SmuzhiyunSPU_CC := $(SPU_CROSS)gcc 15*4882a593SmuzhiyunSPU_AS := $(SPU_CROSS)gcc 16*4882a593SmuzhiyunSPU_LD := $(SPU_CROSS)ld 17*4882a593SmuzhiyunSPU_OBJCOPY := $(SPU_CROSS)objcopy 18*4882a593SmuzhiyunSPU_CFLAGS := -O2 -Wall -I$(srctree)/include -D__KERNEL__ 19*4882a593SmuzhiyunSPU_AFLAGS := -c -D__ASSEMBLY__ -I$(srctree)/include -D__KERNEL__ 20*4882a593SmuzhiyunSPU_LDFLAGS := -N -Ttext=0x0 21*4882a593Smuzhiyun 22*4882a593Smuzhiyun$(obj)/switch.o: $(obj)/spu_save_dump.h $(obj)/spu_restore_dump.h 23*4882a593Smuzhiyunclean-files := spu_save_dump.h spu_restore_dump.h 24*4882a593Smuzhiyun 25*4882a593Smuzhiyun# Compile SPU files 26*4882a593Smuzhiyun cmd_spu_cc = $(SPU_CC) $(SPU_CFLAGS) -c -o $@ $< 27*4882a593Smuzhiyunquiet_cmd_spu_cc = SPU_CC $@ 28*4882a593Smuzhiyun$(obj)/spu_%.o: $(src)/spu_%.c 29*4882a593Smuzhiyun $(call if_changed,spu_cc) 30*4882a593Smuzhiyun 31*4882a593Smuzhiyun# Assemble SPU files 32*4882a593Smuzhiyun cmd_spu_as = $(SPU_AS) $(SPU_AFLAGS) -o $@ $< 33*4882a593Smuzhiyunquiet_cmd_spu_as = SPU_AS $@ 34*4882a593Smuzhiyun$(obj)/spu_%.o: $(src)/spu_%.S 35*4882a593Smuzhiyun $(call if_changed,spu_as) 36*4882a593Smuzhiyun 37*4882a593Smuzhiyun# Link SPU Executables 38*4882a593Smuzhiyun cmd_spu_ld = $(SPU_LD) $(SPU_LDFLAGS) -o $@ $^ 39*4882a593Smuzhiyunquiet_cmd_spu_ld = SPU_LD $@ 40*4882a593Smuzhiyun$(obj)/spu_%: $(obj)/spu_%_crt0.o $(obj)/spu_%.o 41*4882a593Smuzhiyun $(call if_changed,spu_ld) 42*4882a593Smuzhiyun 43*4882a593Smuzhiyun# Copy into binary format 44*4882a593Smuzhiyun cmd_spu_objcopy = $(SPU_OBJCOPY) -O binary $< $@ 45*4882a593Smuzhiyunquiet_cmd_spu_objcopy = OBJCOPY $@ 46*4882a593Smuzhiyun$(obj)/spu_%.bin: $(src)/spu_% 47*4882a593Smuzhiyun $(call if_changed,spu_objcopy) 48*4882a593Smuzhiyun 49*4882a593Smuzhiyun# create C code from ELF executable 50*4882a593Smuzhiyuncmd_hexdump = ( \ 51*4882a593Smuzhiyun echo "/*" ; \ 52*4882a593Smuzhiyun echo " * $*_dump.h: Copyright (C) 2005 IBM." ; \ 53*4882a593Smuzhiyun echo " * Hex-dump auto generated from $*.c." ; \ 54*4882a593Smuzhiyun echo " * Do not edit!" ; \ 55*4882a593Smuzhiyun echo " */" ; \ 56*4882a593Smuzhiyun echo "static unsigned int $*_code[] " \ 57*4882a593Smuzhiyun "__attribute__((__aligned__(128))) = {" ; \ 58*4882a593Smuzhiyun hexdump -v -e '"0x" 4/1 "%02x" "," "\n"' $< ; \ 59*4882a593Smuzhiyun echo "};" ; \ 60*4882a593Smuzhiyun ) > $@ 61*4882a593Smuzhiyunquiet_cmd_hexdump = HEXDUMP $@ 62*4882a593Smuzhiyun$(obj)/%_dump.h: $(obj)/%.bin 63*4882a593Smuzhiyun $(call if_changed,hexdump) 64