mirror of
https://github.com/team-infusion-developers/android_kernel_samsung_msm8976.git
synced 2024-10-21 02:49:11 +00:00
8b3d6663c6
This adds a scheduler for SPUs to make it possible to use more logical SPUs than physical ones are present in the system. Currently, there is no support for preempting a running SPU thread, they have to leave the SPU by either triggering an event on the SPU that causes it to return to the owning thread or by sending a signal to it. This patch also adds operations that enable accessing an SPU in either runnable or saved state. We use an RW semaphore to protect the state of the SPU from changing underneath us, while we are holding it readable. In order to change the state, it is acquired writeable and a context save or restore is executed before downgrading the semaphore to read-only. From: Mark Nutter <mnutter@us.ibm.com>, Uli Weigand <Ulrich.Weigand@de.ibm.com> Signed-off-by: Arnd Bergmann <arndb@de.ibm.com> Signed-off-by: Paul Mackerras <paulus@samba.org>
54 lines
1.7 KiB
Makefile
54 lines
1.7 KiB
Makefile
obj-$(CONFIG_SPU_FS) += spufs.o
|
|
spufs-y += inode.o file.o context.o switch.o syscalls.o
|
|
spufs-y += sched.o backing_ops.o hw_ops.o
|
|
|
|
# Rules to build switch.o with the help of SPU tool chain
|
|
SPU_CROSS := spu-
|
|
SPU_CC := $(SPU_CROSS)gcc
|
|
SPU_AS := $(SPU_CROSS)gcc
|
|
SPU_LD := $(SPU_CROSS)ld
|
|
SPU_OBJCOPY := $(SPU_CROSS)objcopy
|
|
SPU_CFLAGS := -O2 -Wall -I$(srctree)/include -I$(objtree)/include2
|
|
SPU_AFLAGS := -c -D__ASSEMBLY__ -I$(srctree)/include -I$(objtree)/include2
|
|
SPU_LDFLAGS := -N -Ttext=0x0
|
|
|
|
$(obj)/switch.o: $(obj)/spu_save_dump.h $(obj)/spu_restore_dump.h
|
|
|
|
# Compile SPU files
|
|
cmd_spu_cc = $(SPU_CC) $(SPU_CFLAGS) -c -o $@ $<
|
|
quiet_cmd_spu_cc = SPU_CC $@
|
|
$(obj)/spu_%.o: $(src)/spu_%.c
|
|
$(call if_changed,spu_cc)
|
|
|
|
# Assemble SPU files
|
|
cmd_spu_as = $(SPU_AS) $(SPU_AFLAGS) -o $@ $<
|
|
quiet_cmd_spu_as = SPU_AS $@
|
|
$(obj)/spu_%.o: $(src)/spu_%.S
|
|
$(call if_changed,spu_as)
|
|
|
|
# Link SPU Executables
|
|
cmd_spu_ld = $(SPU_LD) $(SPU_LDFLAGS) -o $@ $^
|
|
quiet_cmd_spu_ld = SPU_LD $@
|
|
$(obj)/spu_%: $(obj)/spu_%_crt0.o $(obj)/spu_%.o
|
|
$(call if_changed,spu_ld)
|
|
|
|
# Copy into binary format
|
|
cmd_spu_objcopy = $(SPU_OBJCOPY) -O binary $< $@
|
|
quiet_cmd_spu_objcopy = OBJCOPY $@
|
|
$(obj)/spu_%.bin: $(src)/spu_%
|
|
$(call if_changed,spu_objcopy)
|
|
|
|
# create C code from ELF executable
|
|
cmd_hexdump = ( \
|
|
echo "/*" ; \
|
|
echo " * $*_dump.h: Copyright (C) 2005 IBM." ; \
|
|
echo " * Hex-dump auto generated from $*.c." ; \
|
|
echo " * Do not edit!" ; \
|
|
echo " */" ; \
|
|
echo "static unsigned int $*_code[] __page_aligned = {" ; \
|
|
hexdump -v -e '4/4 "0x%08x, " "\n"' $< ; \
|
|
echo "};" ; \
|
|
) > $@
|
|
quiet_cmd_hexdump = HEXDUMP $@
|
|
$(obj)/%_dump.h: $(obj)/%.bin
|
|
$(call if_changed,hexdump)
|