1*4882a593Smuzhiyun# SPDX-License-Identifier: GPL-2.0 2*4882a593Smuzhiyun# 3*4882a593Smuzhiyun# Makefile for alpha-specific library files.. 4*4882a593Smuzhiyun# 5*4882a593Smuzhiyun 6*4882a593Smuzhiyunasflags-y := $(KBUILD_CFLAGS) 7*4882a593Smuzhiyunccflags-y := -Werror 8*4882a593Smuzhiyun 9*4882a593Smuzhiyun# Many of these routines have implementations tuned for ev6. 10*4882a593Smuzhiyun# Choose them iff we're targeting ev6 specifically. 11*4882a593Smuzhiyunev6-$(CONFIG_ALPHA_EV6) := ev6- 12*4882a593Smuzhiyun 13*4882a593Smuzhiyun# Several make use of the cttz instruction introduced in ev67. 14*4882a593Smuzhiyunev67-$(CONFIG_ALPHA_EV67) := ev67- 15*4882a593Smuzhiyun 16*4882a593Smuzhiyunlib-y = __divqu.o __remqu.o __divlu.o __remlu.o \ 17*4882a593Smuzhiyun udelay.o \ 18*4882a593Smuzhiyun $(ev6-y)memset.o \ 19*4882a593Smuzhiyun $(ev6-y)memcpy.o \ 20*4882a593Smuzhiyun memmove.o \ 21*4882a593Smuzhiyun checksum.o \ 22*4882a593Smuzhiyun csum_partial_copy.o \ 23*4882a593Smuzhiyun $(ev67-y)strlen.o \ 24*4882a593Smuzhiyun stycpy.o \ 25*4882a593Smuzhiyun styncpy.o \ 26*4882a593Smuzhiyun $(ev67-y)strchr.o \ 27*4882a593Smuzhiyun $(ev67-y)strrchr.o \ 28*4882a593Smuzhiyun $(ev6-y)memchr.o \ 29*4882a593Smuzhiyun $(ev6-y)copy_user.o \ 30*4882a593Smuzhiyun $(ev6-y)clear_user.o \ 31*4882a593Smuzhiyun $(ev6-y)csum_ipv6_magic.o \ 32*4882a593Smuzhiyun $(ev6-y)clear_page.o \ 33*4882a593Smuzhiyun $(ev6-y)copy_page.o \ 34*4882a593Smuzhiyun fpreg.o \ 35*4882a593Smuzhiyun callback_srm.o srm_puts.o srm_printk.o \ 36*4882a593Smuzhiyun fls.o 37*4882a593Smuzhiyun 38*4882a593Smuzhiyun# The division routines are built from single source, with different defines. 39*4882a593SmuzhiyunAFLAGS___divqu.o = -DDIV 40*4882a593SmuzhiyunAFLAGS___remqu.o = -DREM 41*4882a593SmuzhiyunAFLAGS___divlu.o = -DDIV -DINTSIZE 42*4882a593SmuzhiyunAFLAGS___remlu.o = -DREM -DINTSIZE 43*4882a593Smuzhiyun 44*4882a593Smuzhiyun$(addprefix $(obj)/,__divqu.o __remqu.o __divlu.o __remlu.o): \ 45*4882a593Smuzhiyun $(src)/$(ev6-y)divide.S FORCE 46*4882a593Smuzhiyun $(call if_changed_rule,as_o_S) 47*4882a593Smuzhiyun 48*4882a593Smuzhiyun# There are direct branches between {str*cpy,str*cat} and stx*cpy. 49*4882a593Smuzhiyun# Ensure the branches are within range by merging these objects. 50*4882a593Smuzhiyun 51*4882a593SmuzhiyunLDFLAGS_stycpy.o := -r 52*4882a593SmuzhiyunLDFLAGS_styncpy.o := -r 53*4882a593Smuzhiyun 54*4882a593Smuzhiyun$(obj)/stycpy.o: $(obj)/strcpy.o $(obj)/$(ev67-y)strcat.o \ 55*4882a593Smuzhiyun $(obj)/$(ev6-y)stxcpy.o FORCE 56*4882a593Smuzhiyun $(call if_changed,ld) 57*4882a593Smuzhiyun 58*4882a593Smuzhiyun$(obj)/styncpy.o: $(obj)/strncpy.o $(obj)/$(ev67-y)strncat.o \ 59*4882a593Smuzhiyun $(obj)/$(ev6-y)stxncpy.o FORCE 60*4882a593Smuzhiyun $(call if_changed,ld) 61