17c02d9428ca18ac600f7ba7d51bb24ca71e733f6Elliott Hughes# 64-bit arm.
2f25d677147ae55a1f3b6ef7fa3ee27921792813fYing Wang
37c02d9428ca18ac600f7ba7d51bb24ca71e733f6Elliott Hughes#
47c02d9428ca18ac600f7ba7d51bb24ca71e733f6Elliott Hughes# Default implementations of functions that are commonly optimized.
57c02d9428ca18ac600f7ba7d51bb24ca71e733f6Elliott Hughes#
67c02d9428ca18ac600f7ba7d51bb24ca71e733f6Elliott Hughes
77c02d9428ca18ac600f7ba7d51bb24ca71e733f6Elliott Hugheslibc_bionic_src_files_arm64 += \
87c02d9428ca18ac600f7ba7d51bb24ca71e733f6Elliott Hughes    bionic/__memset_chk.cpp \
97c02d9428ca18ac600f7ba7d51bb24ca71e733f6Elliott Hughes    bionic/__strcpy_chk.cpp \
107c02d9428ca18ac600f7ba7d51bb24ca71e733f6Elliott Hughes    bionic/__strcat_chk.cpp \
1153e43292aac91bf62995788cd5ca2ceb7caea283Elliott Hughes    bionic/strrchr.cpp \
127c02d9428ca18ac600f7ba7d51bb24ca71e733f6Elliott Hughes
137c02d9428ca18ac600f7ba7d51bb24ca71e733f6Elliott Hugheslibc_freebsd_src_files_arm64 += \
14f25d677147ae55a1f3b6ef7fa3ee27921792813fYing Wang    upstream-freebsd/lib/libc/string/wcscat.c \
15f25d677147ae55a1f3b6ef7fa3ee27921792813fYing Wang    upstream-freebsd/lib/libc/string/wcschr.c \
16f25d677147ae55a1f3b6ef7fa3ee27921792813fYing Wang    upstream-freebsd/lib/libc/string/wcscmp.c \
17f25d677147ae55a1f3b6ef7fa3ee27921792813fYing Wang    upstream-freebsd/lib/libc/string/wcscpy.c \
18f25d677147ae55a1f3b6ef7fa3ee27921792813fYing Wang    upstream-freebsd/lib/libc/string/wcslen.c \
19f25d677147ae55a1f3b6ef7fa3ee27921792813fYing Wang    upstream-freebsd/lib/libc/string/wcsrchr.c \
20f25d677147ae55a1f3b6ef7fa3ee27921792813fYing Wang    upstream-freebsd/lib/libc/string/wmemcmp.c \
217c02d9428ca18ac600f7ba7d51bb24ca71e733f6Elliott Hughes
227c02d9428ca18ac600f7ba7d51bb24ca71e733f6Elliott Hugheslibc_openbsd_src_files_arm64 += \
2341ef902379ba24bd8a3ca6d7733b8376efb55ebdElliott Hughes    upstream-openbsd/lib/libc/string/memrchr.c \
245a92284167ffba6d45210ef6889fa7d255c15d4fVarvara Rainchik    upstream-openbsd/lib/libc/string/stpncpy.c \
2553e43292aac91bf62995788cd5ca2ceb7caea283Elliott Hughes    upstream-openbsd/lib/libc/string/strcat.c \
2653e43292aac91bf62995788cd5ca2ceb7caea283Elliott Hughes    upstream-openbsd/lib/libc/string/strlcat.c \
2753e43292aac91bf62995788cd5ca2ceb7caea283Elliott Hughes    upstream-openbsd/lib/libc/string/strlcpy.c \
2853e43292aac91bf62995788cd5ca2ceb7caea283Elliott Hughes    upstream-openbsd/lib/libc/string/strncat.c \
2953e43292aac91bf62995788cd5ca2ceb7caea283Elliott Hughes    upstream-openbsd/lib/libc/string/strncpy.c \
30f25d677147ae55a1f3b6ef7fa3ee27921792813fYing Wang
317c02d9428ca18ac600f7ba7d51bb24ca71e733f6Elliott Hughes#
327c02d9428ca18ac600f7ba7d51bb24ca71e733f6Elliott Hughes# Inherently architecture-specific code.
337c02d9428ca18ac600f7ba7d51bb24ca71e733f6Elliott Hughes#
34f25d677147ae55a1f3b6ef7fa3ee27921792813fYing Wang
357c02d9428ca18ac600f7ba7d51bb24ca71e733f6Elliott Hugheslibc_bionic_src_files_arm64 += \
36d1973ca51325393f304e82a4d79874f33e54ac16Colin Cross    arch-arm64/bionic/__bionic_clone.S \
37d1973ca51325393f304e82a4d79874f33e54ac16Colin Cross    arch-arm64/bionic/_exit_with_stack_teardown.S \
38d1973ca51325393f304e82a4d79874f33e54ac16Colin Cross    arch-arm64/bionic/setjmp.S \
39d1973ca51325393f304e82a4d79874f33e54ac16Colin Cross    arch-arm64/bionic/__set_tls.c \
40d1973ca51325393f304e82a4d79874f33e54ac16Colin Cross    arch-arm64/bionic/syscall.S \
416a918870bab1a55a5f57dd7954abd9a8a27c1bc2Dan Albert    arch-arm64/bionic/vfork.S \
42f25d677147ae55a1f3b6ef7fa3ee27921792813fYing Wang
43f25d677147ae55a1f3b6ef7fa3ee27921792813fYing Wang
44f25d677147ae55a1f3b6ef7fa3ee27921792813fYing Wanglibc_crt_target_cflags_arm64 := \
45f25d677147ae55a1f3b6ef7fa3ee27921792813fYing Wang    -I$(LOCAL_PATH)/arch-arm64/include
46f25d677147ae55a1f3b6ef7fa3ee27921792813fYing Wang
47f25d677147ae55a1f3b6ef7fa3ee27921792813fYing Wanglibc_crt_target_crtbegin_file_arm64 := \
48f25d677147ae55a1f3b6ef7fa3ee27921792813fYing Wang    $(LOCAL_PATH)/arch-arm64/bionic/crtbegin.c
49f25d677147ae55a1f3b6ef7fa3ee27921792813fYing Wang
50f25d677147ae55a1f3b6ef7fa3ee27921792813fYing Wanglibc_crt_target_crtbegin_so_file_arm64 := \
51f25d677147ae55a1f3b6ef7fa3ee27921792813fYing Wang    $(LOCAL_PATH)/arch-common/bionic/crtbegin_so.c
527e4fa560999d07064d219a16ebb50d3691dd1b63Bernhard Rosenkraenzer
532146d142b23b830ad94f8479ce5abeaa15820e7dChristopher Ferris## CPU variant specific source files
542146d142b23b830ad94f8479ce5abeaa15820e7dChristopher Ferrisifeq ($(strip $(TARGET_CPU_VARIANT)),)
552146d142b23b830ad94f8479ce5abeaa15820e7dChristopher Ferris  $(warning TARGET_ARCH is arm64, but TARGET_CPU_VARIANT is not defined)
562146d142b23b830ad94f8479ce5abeaa15820e7dChristopher Ferrisendif
572146d142b23b830ad94f8479ce5abeaa15820e7dChristopher Ferriscpu_variant_mk := $(LOCAL_PATH)/arch-arm64/$(TARGET_CPU_VARIANT)/$(TARGET_CPU_VARIANT).mk
582146d142b23b830ad94f8479ce5abeaa15820e7dChristopher Ferrisifeq ($(wildcard $(cpu_variant_mk)),)
592169e17482da91865e412e55b52b88d7c8db47f6Christopher Ferris$(error "TARGET_CPU_VARIANT not set or set to an unknown value. Possible values are generic, denver64. Use generic for devices that do not have a CPU similar to any of the supported cpu variants.")
602146d142b23b830ad94f8479ce5abeaa15820e7dChristopher Ferrisendif
612146d142b23b830ad94f8479ce5abeaa15820e7dChristopher Ferrisinclude $(cpu_variant_mk)
62a6b6ed5fe9dd247684de5f35a0367be65876339eColin Crosslibc_common_additional_dependencies += $(cpu_variant_mk)
632146d142b23b830ad94f8479ce5abeaa15820e7dChristopher Ferris
642146d142b23b830ad94f8479ce5abeaa15820e7dChristopher Ferriscpu_variant_mk :=
65