# -*- makefile -*-
#
# arch/alpha/Makefile
#
# Special rules for this architecture.  Note that this is actually
# included from the main Makefile, and that pathnames should be
# accordingly.
#

OPTFLAGS = -Os -fomit-frame-pointer
BITSIZE  = 64

# Special CFLAGS for the divide code
DIVCFLAGS = $(REQFLAGS) \
	-O3 -fomit-frame-pointer -fcall-saved-1 -fcall-saved-2 \
	-fcall-saved-3 -fcall-saved-4 -fcall-saved-5 -fcall-saved-6 \
	-fcall-saved-7 -fcall-saved-8 -fcall-saved-15 -fcall-saved-16 \
	-fcall-saved-17 -fcall-saved-18 -fcall-saved-19 -fcall-saved-20 \
	-fcall-saved-21 -fcall-saved-22 -ffixed-23 -fcall-saved-24 \
	-fcall-saved-25 -fcall-saved-27

ARCHOBJS = \
	arch/$(ARCH)/__divqu.o \
	arch/$(ARCH)/__remqu.o \
	arch/$(ARCH)/__divq.o \
	arch/$(ARCH)/__remq.o \
	arch/$(ARCH)/__divlu.o \
	arch/$(ARCH)/__remlu.o \
	arch/$(ARCH)/__divl.o \
	arch/$(ARCH)/__reml.o
ARCHSOOBJS = \
	arch/$(ARCH)/__divqu.lo \
	arch/$(ARCH)/__remqu.lo \
	arch/$(ARCH)/__divq.lo \
	arch/$(ARCH)/__remq.lo \
	arch/$(ARCH)/__divlu.lo \
	arch/$(ARCH)/__remlu.lo \
	arch/$(ARCH)/__divl.lo \
	arch/$(ARCH)/__reml.lo

arch/$(ARCH)/%.s: arch/$(ARCH)/%.ss
	sed -e 's/\$$0\b/$$27/g' -e 's/\$$24\b/$$99/g' \
	    -e 's/\$$16\b/$$24/g' -e 's/\$$17\b/$$25/g' \
            -e 's/\$$26\b/$$23/g' -e 's/\$$99\b/$$16/g' < $< > $@

arch/$(ARCH)/%.ls: arch/$(ARCH)/%.lss
	sed -e 's/\$$0\b/$$27/g' -e 's/\$$24\b/$$99/g' \
	    -e 's/\$$16\b/$$24/g' -e 's/\$$17\b/$$25/g' \
            -e 's/\$$26\b/$$23/g' -e 's/\$$99\b/$$16/g' < $< > $@

arch/$(ARCH)/__divqu.ss: arch/$(ARCH)/divide.c
	$(CC) $(DIVCFLAGS) -DSIGNED=0 -DREM=0 -DBITS=64 -DNAME=__divqu -S -o $@ $<

arch/$(ARCH)/__remqu.ss: arch/$(ARCH)/divide.c
	$(CC) $(DIVCFLAGS) -DSIGNED=0 -DREM=1 -DBITS=64 -DNAME=__remqu -S -o $@ $<

arch/$(ARCH)/__divq.ss: arch/$(ARCH)/divide.c
	$(CC) $(DIVCFLAGS) -DSIGNED=1 -DREM=0 -DBITS=64 -DNAME=__divq -S -o $@ $<

arch/$(ARCH)/__remq.ss: arch/$(ARCH)/divide.c
	$(CC) $(DIVCFLAGS) -DSIGNED=1 -DREM=1 -DBITS=64 -DNAME=__remq -S -o $@ $<

arch/$(ARCH)/__divlu.ss: arch/$(ARCH)/divide.c
	$(CC) $(DIVCFLAGS) -DSIGNED=0 -DREM=0 -DBITS=32 -DNAME=__divlu -S -o $@ $<

arch/$(ARCH)/__remlu.ss: arch/$(ARCH)/divide.c
	$(CC) $(DIVCFLAGS) -DSIGNED=0 -DREM=1 -DBITS=32 -DNAME=__remlu -S -o $@ $<

arch/$(ARCH)/__divl.ss: arch/$(ARCH)/divide.c
	$(CC) $(DIVCFLAGS) -DSIGNED=1 -DREM=0 -DBITS=32 -DNAME=__divl -S -o $@ $<

arch/$(ARCH)/__reml.ss: arch/$(ARCH)/divide.c
	$(CC) $(DIVCFLAGS) -DSIGNED=1 -DREM=1 -DBITS=32 -DNAME=__reml -S -o $@ $<

arch/$(ARCH)/__divqu.lss: arch/$(ARCH)/divide.c
	$(CC) $(DIVCFLAGS) -fPIC -DSIGNED=0 -DREM=0 -DBITS=64 -DNAME=__divqu -S -o $@ $<

arch/$(ARCH)/__remqu.lss: arch/$(ARCH)/divide.c
	$(CC) $(DIVCFLAGS) -fPIC -DSIGNED=0 -DREM=1 -DBITS=64 -DNAME=__remqu -S -o $@ $<

arch/$(ARCH)/__divq.lss: arch/$(ARCH)/divide.c
	$(CC) $(DIVCFLAGS) -fPIC -DSIGNED=1 -DREM=0 -DBITS=64 -DNAME=__divq -S -o $@ $<

arch/$(ARCH)/__remq.lss: arch/$(ARCH)/divide.c
	$(CC) $(DIVCFLAGS) -fPIC -DSIGNED=1 -DREM=1 -DBITS=64 -DNAME=__remq -S -o $@ $<

arch/$(ARCH)/__divlu.lss: arch/$(ARCH)/divide.c
	$(CC) $(DIVCFLAGS) -fPIC -DSIGNED=0 -DREM=0 -DBITS=32 -DNAME=__divlu -S -o $@ $<

arch/$(ARCH)/__remlu.lss: arch/$(ARCH)/divide.c
	$(CC) $(DIVCFLAGS) -fPIC -DSIGNED=0 -DREM=1 -DBITS=32 -DNAME=__remlu -S -o $@ $<

arch/$(ARCH)/__divl.lss: arch/$(ARCH)/divide.c
	$(CC) $(DIVCFLAGS) -fPIC -DSIGNED=1 -DREM=0 -DBITS=32 -DNAME=__divl -S -o $@ $<

arch/$(ARCH)/__reml.lss: arch/$(ARCH)/divide.c
	$(CC) $(DIVCFLAGS) -fPIC -DSIGNED=1 -DREM=1 -DBITS=32 -DNAME=__reml -S -o $@ $<

archclean:
	rm -f arch/$(ARCH)/*.ss arch/$(ARCH)/*.lss

