From nobody Tue Apr 12 17:10:32 2022 X-Original-To: dev-commits-src-main@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 6300611E1F75; Tue, 12 Apr 2022 17:10:33 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4KdC0S73BJz4kxb; Tue, 12 Apr 2022 17:10:32 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1649783433; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=eAACCpxCj/xb156cYv2o81jpu8z9FssfubfvYw/ZvWk=; b=WRwsCCh9E7eFa/FLxizcxoNnQSiIU8tcFGsE27jlMCoc0WjcfRMSr03f5XtB+WISPkrK1R Ezn7sMiof7nJCa95SlgoJdaQXXzAAd3lIPS2+OQXnJ34IB3PE4W0Y6aVer+HXoWaGFUdHV uxRxIsASfoBOb8PjpKwcZI5ye6sqN/9Ol5MeMcbjdBr4NRwZOCNqxUFY1HLuaJCl+MrM2r OWiyUc4GLWsfLqr4B4pucpG7za3VYGliHZX5Fm77DuPjPdso0ug/tbwQGFnzZ4aAHR1GAz 2EsjVzu9zIiJTUiTSFmSxOrmLte8M2ZDzQk6popU7x617pqaVCpG7f6mx/t5Sg== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 97B4A1B4B0; Tue, 12 Apr 2022 17:10:32 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.16.1/8.16.1) with ESMTP id 23CHAWXv051613; Tue, 12 Apr 2022 17:10:32 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 23CHAWEQ051612; Tue, 12 Apr 2022 17:10:32 GMT (envelope-from git) Date: Tue, 12 Apr 2022 17:10:32 GMT Message-Id: <202204121710.23CHAWEQ051612@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: John Baldwin Subject: git: 56f5947a7102 - main - Remove checks for __GNUCLIKE_ASM assuming it is always true. List-Id: Commit messages for the main branch of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-main List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-main@freebsd.org X-BeenThere: dev-commits-src-main@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: jhb X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: 56f5947a7102554729e0400f08b0f4d50a2d0827 Auto-Submitted: auto-generated ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1649783433; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=eAACCpxCj/xb156cYv2o81jpu8z9FssfubfvYw/ZvWk=; b=C0b+DYjxCV1zRGzQEaK3lfGSQULyMFCpsMNqzMurao6NdgsKuaarDNLxl3X7G2C6YeV6i6 VkrNgOHiWs57DN3C+CB03uNIyBXO/j9L1v5qW0n9HvbZFkkx+66xShRW9ymEgFcPp40lzA HYABGukeYPHzpJZfBdI4Yne8wmjnkItj0bG+0A6JiG1CuCiZ9Ezf8O1hjSgM+aQGpWq9mP amKL7sXqxoz5zs8WsGsYdxFIrAM0O2gRsl+2V54fiKlJlwQElFUO8mk/dZN1GY8c62DAXl AHYgKpZBEgHZI6xEipgFYqZV9OkSYQre3A5Oyy1OVdIMgwtpnHSF2cMYtVxlQQ== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1649783433; a=rsa-sha256; cv=none; b=bxdBHuDNxUnAT7bolKw6zgiSGnq9+JxHj+34WV2SmVgBko9GsLpVwufZOMHYVQeIvrnl17 UrwjMbwyF6uha/g+2FQveXW2wEWTxNCQoRfjcDKF2p2sORZQc1A+U21ndUBOBKeCIxwtz8 ZfLaml8BRleUGMQPYH7mrh8ywphgKFTjpQ2GNCBnu4cti7PnWhbdM1AzVw4/MpK11qFSTB QqJMQuvkN310gT3Fk/i+icgyr/pQUcdiz4ADmS11nG2a2+TZUte4b54Z0Sfr28osqfQoW8 jIWlry3qTIjE0/dEx64D160uxGIrfgDt3BfY9eMYxPwpbgpkHa4k/byf4TdSCg== ARC-Authentication-Results: i=1; mx1.freebsd.org; none X-ThisMailContainsUnwantedMimeParts: N The branch main has been updated by jhb: URL: https://cgit.FreeBSD.org/src/commit/?id=56f5947a7102554729e0400f08b0f4d50a2d0827 commit 56f5947a7102554729e0400f08b0f4d50a2d0827 Author: John Baldwin AuthorDate: 2022-04-12 17:05:45 +0000 Commit: John Baldwin CommitDate: 2022-04-12 17:05:45 +0000 Remove checks for __GNUCLIKE_ASM assuming it is always true. All supported compilers (modern versions of GCC and clang) support this. Many places didn't have an #else so would just silently do the wrong thing. Ancient versions of icc (the original motivation for this) are no longer a compiler FreeBSD supports. PR: 263102 (exp-run) Reviewed by: brooks, imp Differential Revision: https://reviews.freebsd.org/D34797 --- lib/msun/src/math_private.h | 6 +- sys/amd64/amd64/fpu.c | 22 ----- sys/amd64/include/atomic.h | 43 --------- sys/amd64/include/cpufunc.h | 6 +- sys/amd64/include/ieeefp.h | 10 +- sys/amd64/include/pcpu.h | 6 +- sys/amd64/include/profile.h | 6 -- sys/arm64/include/profile.h | 4 - sys/crypto/via/padlock_cipher.c | 2 - sys/crypto/via/padlock_hash.c | 4 - sys/dev/random/nehemiah.c | 2 - sys/dev/sound/pcm/feeder_rate.c | 2 +- sys/i386/i386/in_cksum_machdep.c | 192 --------------------------------------- sys/i386/i386/npx.c | 21 ----- sys/i386/include/atomic.h | 47 ---------- sys/i386/include/cpufunc.h | 6 +- sys/i386/include/ieeefp.h | 4 - sys/i386/include/in_cksum.h | 9 -- sys/i386/include/pcpu.h | 6 +- sys/i386/include/profile.h | 6 -- sys/x86/include/bus.h | 42 --------- sys/x86/include/x86_ieeefp.h | 4 - sys/x86/x86/identcpu.c | 4 - 23 files changed, 19 insertions(+), 435 deletions(-) diff --git a/lib/msun/src/math_private.h b/lib/msun/src/math_private.h index 20ce7bd88464..df526e71e545 100644 --- a/lib/msun/src/math_private.h +++ b/lib/msun/src/math_private.h @@ -644,7 +644,7 @@ rnintl(long double x) * return type provided their arg is a floating point integer. They can * sometimes be more efficient because no rounding is required. */ -#if (defined(amd64) || defined(__i386__)) && defined(__GNUCLIKE_ASM) +#if defined(amd64) || defined(__i386__) #define irint(x) \ (sizeof(x) == sizeof(float) && \ sizeof(__float_t) == sizeof(long double) ? irintf(x) : \ @@ -657,7 +657,7 @@ rnintl(long double x) #define i64rint(x) ((int64_t)(x)) /* only needed for ld128 so not opt. */ -#if defined(__i386__) && defined(__GNUCLIKE_ASM) +#if defined(__i386__) static __inline int irintf(float x) { @@ -677,7 +677,7 @@ irintd(double x) } #endif -#if (defined(__amd64__) || defined(__i386__)) && defined(__GNUCLIKE_ASM) +#if defined(__amd64__) || defined(__i386__) static __inline int irintl(long double x) { diff --git a/sys/amd64/amd64/fpu.c b/sys/amd64/amd64/fpu.c index 9b23cc5773a3..0bbf1cf047c0 100644 --- a/sys/amd64/amd64/fpu.c +++ b/sys/amd64/amd64/fpu.c @@ -69,8 +69,6 @@ __FBSDID("$FreeBSD$"); * Floating point support. */ -#if defined(__GNUCLIKE_ASM) && !defined(lint) - #define fldcw(cw) __asm __volatile("fldcw %0" : : "m" (cw)) #define fnclex() __asm __volatile("fnclex") #define fninit() __asm __volatile("fninit") @@ -145,26 +143,6 @@ xsaveopt64(char *addr, uint64_t mask) "memory"); } -#else /* !(__GNUCLIKE_ASM && !lint) */ - -void fldcw(u_short cw); -void fnclex(void); -void fninit(void); -void fnstcw(caddr_t addr); -void fnstsw(caddr_t addr); -void fxsave(caddr_t addr); -void fxrstor(caddr_t addr); -void ldmxcsr(u_int csr); -void stmxcsr(u_int *csr); -void xrstor32(char *addr, uint64_t mask); -void xrstor64(char *addr, uint64_t mask); -void xsave32(char *addr, uint64_t mask); -void xsave64(char *addr, uint64_t mask); -void xsaveopt32(char *addr, uint64_t mask); -void xsaveopt64(char *addr, uint64_t mask); - -#endif /* __GNUCLIKE_ASM && !lint */ - #define start_emulating() load_cr0(rcr0() | CR0_TS) #define stop_emulating() clts() diff --git a/sys/amd64/include/atomic.h b/sys/amd64/include/atomic.h index d61fb359e261..8a7bab8fee2d 100644 --- a/sys/amd64/include/atomic.h +++ b/sys/amd64/include/atomic.h @@ -102,38 +102,6 @@ * atomic_readandclear_long(P) (return (*(u_long *)(P)); *(u_long *)(P) = 0;) */ -#if !defined(__GNUCLIKE_ASM) -#define ATOMIC_ASM(NAME, TYPE, OP, CONS, V) \ -void atomic_##NAME##_##TYPE(volatile u_##TYPE *p, u_##TYPE v); \ -void atomic_##NAME##_barr_##TYPE(volatile u_##TYPE *p, u_##TYPE v) - -int atomic_cmpset_char(volatile u_char *dst, u_char expect, u_char src); -int atomic_cmpset_short(volatile u_short *dst, u_short expect, u_short src); -int atomic_cmpset_int(volatile u_int *dst, u_int expect, u_int src); -int atomic_cmpset_long(volatile u_long *dst, u_long expect, u_long src); -int atomic_fcmpset_char(volatile u_char *dst, u_char *expect, u_char src); -int atomic_fcmpset_short(volatile u_short *dst, u_short *expect, - u_short src); -int atomic_fcmpset_int(volatile u_int *dst, u_int *expect, u_int src); -int atomic_fcmpset_long(volatile u_long *dst, u_long *expect, u_long src); -u_int atomic_fetchadd_int(volatile u_int *p, u_int v); -u_long atomic_fetchadd_long(volatile u_long *p, u_long v); -int atomic_testandset_int(volatile u_int *p, u_int v); -int atomic_testandset_long(volatile u_long *p, u_int v); -int atomic_testandclear_int(volatile u_int *p, u_int v); -int atomic_testandclear_long(volatile u_long *p, u_int v); -void atomic_thread_fence_acq(void); -void atomic_thread_fence_acq_rel(void); -void atomic_thread_fence_rel(void); -void atomic_thread_fence_seq_cst(void); - -#define ATOMIC_LOAD(TYPE) \ -u_##TYPE atomic_load_acq_##TYPE(volatile u_##TYPE *p) -#define ATOMIC_STORE(TYPE) \ -void atomic_store_rel_##TYPE(volatile u_##TYPE *p, u_##TYPE v) - -#else /* !__GNUCLIKE_ASM */ - /* * Always use lock prefixes. The result is slighly less optimal for * UP systems, but it matters less now, and sometimes UP is emulated @@ -385,8 +353,6 @@ atomic_thread_fence_seq_cst(void) __storeload_barrier(); } -#endif /* !__GNUCLIKE_ASM */ - ATOMIC_ASM(set, char, "orb %b1,%0", "iq", v); ATOMIC_ASM(clear, char, "andb %b1,%0", "iq", ~v); ATOMIC_ASM(add, char, "addb %b1,%0", "iq", v); @@ -423,8 +389,6 @@ ATOMIC_LOADSTORE(long); #ifndef WANT_FUNCTIONS /* Read the current value and store a new value in the destination. */ -#ifdef __GNUCLIKE_ASM - static __inline u_int atomic_swap_int(volatile u_int *p, u_int v) { @@ -449,13 +413,6 @@ atomic_swap_long(volatile u_long *p, u_long v) return (v); } -#else /* !__GNUCLIKE_ASM */ - -u_int atomic_swap_int(volatile u_int *p, u_int v); -u_long atomic_swap_long(volatile u_long *p, u_long v); - -#endif /* __GNUCLIKE_ASM */ - #define atomic_set_acq_char atomic_set_barr_char #define atomic_set_rel_char atomic_set_barr_char #define atomic_clear_acq_char atomic_clear_barr_char diff --git a/sys/amd64/include/cpufunc.h b/sys/amd64/include/cpufunc.h index bca74d8ead67..f639c9c7119e 100644 --- a/sys/amd64/include/cpufunc.h +++ b/sys/amd64/include/cpufunc.h @@ -57,7 +57,7 @@ struct region_descriptor; #define writel(va, d) (*(volatile uint32_t *) (va) = (d)) #define writeq(va, d) (*(volatile uint64_t *) (va) = (d)) -#if defined(__GNUCLIKE_ASM) && defined(__CC_SUPPORTS___INLINE) +#if defined(__CC_SUPPORTS___INLINE) static __inline void breakpoint(void) @@ -964,7 +964,7 @@ sgx_eremove(void *epc) return (sgx_encls(SGX_EREMOVE, 0, (uint64_t)epc, 0)); } -#else /* !(__GNUCLIKE_ASM && __CC_SUPPORTS___INLINE) */ +#else /* !__CC_SUPPORTS___INLINE */ int breakpoint(void); u_int bsfl(u_int mask); @@ -1029,7 +1029,7 @@ void wbinvd(void); void write_rflags(u_int rf); void wrmsr(u_int msr, uint64_t newval); -#endif /* __GNUCLIKE_ASM && __CC_SUPPORTS___INLINE */ +#endif /* __CC_SUPPORTS___INLINE */ void reset_dbregs(void); diff --git a/sys/amd64/include/ieeefp.h b/sys/amd64/include/ieeefp.h index 96ee7e9040d8..48d879f0b80b 100644 --- a/sys/amd64/include/ieeefp.h +++ b/sys/amd64/include/ieeefp.h @@ -67,8 +67,6 @@ #define SSE_RND_OFF 13 /* rounding control offset */ #define SSE_FZ_OFF 15 /* flush to zero offset */ -#ifdef __GNUCLIKE_ASM - /* * General notes about conflicting SSE vs FP status bits. * This code assumes that software will not fiddle with the control @@ -184,9 +182,7 @@ __fpgetsticky(void) return ((fp_except_t)_ex); } -#endif /* __GNUCLIKE_ASM */ - -#if !defined(__IEEEFP_NOINLINES__) && defined(__GNUCLIKE_ASM) +#if !defined(__IEEEFP_NOINLINES__) #define fpgetmask() __fpgetmask() #define fpgetprec() __fpgetprec() @@ -196,7 +192,7 @@ __fpgetsticky(void) #define fpsetprec(m) __fpsetprec(m) #define fpsetround(m) __fpsetround(m) -#else /* !(!__IEEEFP_NOINLINES__ && __GNUCLIKE_ASM) */ +#else /* __IEEEFP_NOINLINES__ */ /* Augment the userland declarations. */ __BEGIN_DECLS @@ -210,6 +206,6 @@ fp_prec_t fpgetprec(void); fp_prec_t fpsetprec(fp_prec_t); __END_DECLS -#endif /* !__IEEEFP_NOINLINES__ && __GNUCLIKE_ASM */ +#endif /* !__IEEEFP_NOINLINES__ */ #endif /* !_MACHINE_IEEEFP_H_ */ diff --git a/sys/amd64/include/pcpu.h b/sys/amd64/include/pcpu.h index dc99d4249bd2..ad2b6216ed47 100644 --- a/sys/amd64/include/pcpu.h +++ b/sys/amd64/include/pcpu.h @@ -109,7 +109,7 @@ _Static_assert(sizeof(struct monitorbuf) == 128, "2x cache line"); #define MONITOR_STOPSTATE_RUNNING 0 #define MONITOR_STOPSTATE_STOPPED 1 -#if defined(__GNUCLIKE_ASM) && defined(__GNUCLIKE___TYPEOF) +#if defined(__GNUCLIKE___TYPEOF) /* * Evaluates to the byte offset of the per-cpu variable name. @@ -277,11 +277,11 @@ _Static_assert(sizeof(struct monitorbuf) == 128, "2x cache line"); } \ } while (0); -#else /* !__GNUCLIKE_ASM || !__GNUCLIKE___TYPEOF */ +#else /* !__GNUCLIKE___TYPEOF */ #error "this file needs to be ported to your compiler" -#endif /* __GNUCLIKE_ASM && __GNUCLIKE___TYPEOF */ +#endif /* __GNUCLIKE___TYPEOF */ #endif /* _KERNEL */ diff --git a/sys/amd64/include/profile.h b/sys/amd64/include/profile.h index b0fb469f5354..e86fd582b407 100644 --- a/sys/amd64/include/profile.h +++ b/sys/amd64/include/profile.h @@ -45,7 +45,6 @@ static void _mcount(uintfptr_t frompc, uintfptr_t selfpc) __used; \ static void _mcount -#ifdef __GNUCLIKE_ASM #define MCOUNT __asm(" \n\ .text \n\ .p2align 4,0x90 \n\ @@ -101,9 +100,6 @@ mcount() \ _mcount(frompc, selfpc); \ } #endif -#else /* !__GNUCLIKE_ASM */ -#define MCOUNT -#endif /* __GNUCLIKE_ASM */ typedef u_long uintfptr_t; @@ -114,9 +110,7 @@ typedef u_long uintfptr_t; typedef u_long fptrdiff_t; __BEGIN_DECLS -#ifdef __GNUCLIKE_ASM void mcount(void) __asm(".mcount"); -#endif __END_DECLS #endif /* !_KERNEL */ diff --git a/sys/arm64/include/profile.h b/sys/arm64/include/profile.h index f5f5caa1faa3..f898e2707d65 100644 --- a/sys/arm64/include/profile.h +++ b/sys/arm64/include/profile.h @@ -48,7 +48,6 @@ typedef __uintfptr_t uintfptr_t; static void _mcount(uintfptr_t frompc, uintfptr_t selfpc) __used; \ static void _mcount -#ifdef __GNUCLIKE_ASM /* * Call into _mcount. On arm64 the .mcount is a function so callers will * handle caller saved registers. As we don't directly touch any callee @@ -86,9 +85,6 @@ mcount(uintfptr_t frompc) _mcount(frompc, __builtin_return_address(0)); } #endif -#else -#define MCOUNT -#endif #endif /* !_KERNEL */ diff --git a/sys/crypto/via/padlock_cipher.c b/sys/crypto/via/padlock_cipher.c index 0bc831f07c40..c5cd5161f4b2 100644 --- a/sys/crypto/via/padlock_cipher.c +++ b/sys/crypto/via/padlock_cipher.c @@ -83,7 +83,6 @@ static __inline void padlock_cbc(void *in, void *out, size_t count, void *key, union padlock_cw *cw, void *iv) { -#ifdef __GNUCLIKE_ASM /* The .byte line is really VIA C3 "xcrypt-cbc" instruction */ __asm __volatile( "pushf \n\t" @@ -94,7 +93,6 @@ padlock_cbc(void *in, void *out, size_t count, void *key, union padlock_cw *cw, : "b" (key), "d" (cw) : "cc", "memory" ); -#endif } static void diff --git a/sys/crypto/via/padlock_hash.c b/sys/crypto/via/padlock_hash.c index f09024af4ed5..f834e677fc98 100644 --- a/sys/crypto/via/padlock_hash.c +++ b/sys/crypto/via/padlock_hash.c @@ -124,13 +124,11 @@ padlock_do_sha1(const u_char *in, u_char *out, int count) ((uint32_t *)result)[3] = 0x10325476; ((uint32_t *)result)[4] = 0xC3D2E1F0; -#ifdef __GNUCLIKE_ASM __asm __volatile( ".byte 0xf3, 0x0f, 0xa6, 0xc8" /* rep xsha1 */ : "+S"(in), "+D"(result) : "c"(count), "a"(0) ); -#endif padlock_output_block((uint32_t *)result, (uint32_t *)out, SHA1_HASH_LEN / sizeof(uint32_t)); @@ -151,13 +149,11 @@ padlock_do_sha256(const char *in, char *out, int count) ((uint32_t *)result)[6] = 0x1F83D9AB; ((uint32_t *)result)[7] = 0x5BE0CD19; -#ifdef __GNUCLIKE_ASM __asm __volatile( ".byte 0xf3, 0x0f, 0xa6, 0xd0" /* rep xsha256 */ : "+S"(in), "+D"(result) : "c"(count), "a"(0) ); -#endif padlock_output_block((uint32_t *)result, (uint32_t *)out, SHA2_256_HASH_LEN / sizeof(uint32_t)); diff --git a/sys/dev/random/nehemiah.c b/sys/dev/random/nehemiah.c index 3ad18005c935..6381b9357176 100644 --- a/sys/dev/random/nehemiah.c +++ b/sys/dev/random/nehemiah.c @@ -65,7 +65,6 @@ VIA_RNG_store(void *buf) uint32_t retval = 0; uint32_t rate = 0; -#ifdef __GNUCLIKE_ASM __asm __volatile( "movl $0,%%edx\n\t" ".byte 0x0f, 0xa7, 0xc0" @@ -73,7 +72,6 @@ VIA_RNG_store(void *buf) : : "memory" ); -#endif if (rate == 0) return (retval&0x1f); return (0); diff --git a/sys/dev/sound/pcm/feeder_rate.c b/sys/dev/sound/pcm/feeder_rate.c index f6bb1836089b..b4b7dc7401e0 100644 --- a/sys/dev/sound/pcm/feeder_rate.c +++ b/sys/dev/sound/pcm/feeder_rate.c @@ -310,7 +310,7 @@ SYSCTL_PROC(_hw_snd, OID_AUTO, feeder_rate_quality, */ #define _Z_GCAST(x) ((uint64_t)(x)) -#if defined(__GNUCLIKE_ASM) && defined(__i386__) +#if defined(__i386__) /* * This is where i386 being beaten to a pulp. Fortunately this function is * rarely being called and if it is, it will decide the best (hopefully) diff --git a/sys/i386/i386/in_cksum_machdep.c b/sys/i386/i386/in_cksum_machdep.c index ba7cd170286b..49255a3c99ec 100644 --- a/sys/i386/i386/in_cksum_machdep.c +++ b/sys/i386/i386/in_cksum_machdep.c @@ -56,199 +56,8 @@ __FBSDID("$FreeBSD$"); #undef ADDCARRY #define ADDCARRY(x) if ((x) > 0xffff) (x) -= 0xffff -/* - * icc needs to be special cased here, as the asm code below results - * in broken code if compiled with icc. - */ -#if !defined(__GNUCLIKE_ASM) -/* non gcc parts stolen from sys/alpha/alpha/in_cksum.c */ -#define REDUCE32 \ - { \ - q_util.q = sum; \ - sum = q_util.s[0] + q_util.s[1] + q_util.s[2] + q_util.s[3]; \ - } -#define REDUCE16 \ - { \ - q_util.q = sum; \ - l_util.l = q_util.s[0] + q_util.s[1] + q_util.s[2] + q_util.s[3]; \ - sum = l_util.s[0] + l_util.s[1]; \ - ADDCARRY(sum); \ - } -#endif #define REDUCE {sum = (sum & 0xffff) + (sum >> 16); ADDCARRY(sum);} -#if !defined(__GNUCLIKE_ASM) -static const u_int32_t in_masks[] = { - /*0 bytes*/ /*1 byte*/ /*2 bytes*/ /*3 bytes*/ - 0x00000000, 0x000000FF, 0x0000FFFF, 0x00FFFFFF, /* offset 0 */ - 0x00000000, 0x0000FF00, 0x00FFFF00, 0xFFFFFF00, /* offset 1 */ - 0x00000000, 0x00FF0000, 0xFFFF0000, 0xFFFF0000, /* offset 2 */ - 0x00000000, 0xFF000000, 0xFF000000, 0xFF000000, /* offset 3 */ -}; - -union l_util { - u_int16_t s[2]; - u_int32_t l; -}; -union q_util { - u_int16_t s[4]; - u_int32_t l[2]; - u_int64_t q; -}; - -static u_int64_t -in_cksumdata(const u_int32_t *lw, int len) -{ - u_int64_t sum = 0; - u_int64_t prefilled; - int offset; - union q_util q_util; - - if ((3 & (long) lw) == 0 && len == 20) { - sum = (u_int64_t) lw[0] + lw[1] + lw[2] + lw[3] + lw[4]; - REDUCE32; - return sum; - } - - if ((offset = 3 & (long) lw) != 0) { - const u_int32_t *masks = in_masks + (offset << 2); - lw = (u_int32_t *) (((long) lw) - offset); - sum = *lw++ & masks[len >= 3 ? 3 : len]; - len -= 4 - offset; - if (len <= 0) { - REDUCE32; - return sum; - } - } -#if 0 - /* - * Force to cache line boundary. - */ - offset = 32 - (0x1f & (long) lw); - if (offset < 32 && len > offset) { - len -= offset; - if (4 & offset) { - sum += (u_int64_t) lw[0]; - lw += 1; - } - if (8 & offset) { - sum += (u_int64_t) lw[0] + lw[1]; - lw += 2; - } - if (16 & offset) { - sum += (u_int64_t) lw[0] + lw[1] + lw[2] + lw[3]; - lw += 4; - } - } -#endif - /* - * access prefilling to start load of next cache line. - * then add current cache line - * save result of prefilling for loop iteration. - */ - prefilled = lw[0]; - while ((len -= 32) >= 4) { - u_int64_t prefilling = lw[8]; - sum += prefilled + lw[1] + lw[2] + lw[3] - + lw[4] + lw[5] + lw[6] + lw[7]; - lw += 8; - prefilled = prefilling; - } - if (len >= 0) { - sum += prefilled + lw[1] + lw[2] + lw[3] - + lw[4] + lw[5] + lw[6] + lw[7]; - lw += 8; - } else { - len += 32; - } - while ((len -= 16) >= 0) { - sum += (u_int64_t) lw[0] + lw[1] + lw[2] + lw[3]; - lw += 4; - } - len += 16; - while ((len -= 4) >= 0) { - sum += (u_int64_t) *lw++; - } - len += 4; - if (len > 0) - sum += (u_int64_t) (in_masks[len] & *lw); - REDUCE32; - return sum; -} - -u_short -in_addword(u_short a, u_short b) -{ - u_int64_t sum = a + b; - - ADDCARRY(sum); - return (sum); -} - -u_short -in_pseudo(u_int32_t a, u_int32_t b, u_int32_t c) -{ - u_int64_t sum; - union q_util q_util; - union l_util l_util; - - sum = (u_int64_t) a + b + c; - REDUCE16; - return (sum); -} - -u_short -in_cksum_skip(struct mbuf *m, int len, int skip) -{ - u_int64_t sum = 0; - int mlen = 0; - int clen = 0; - caddr_t addr; - union q_util q_util; - union l_util l_util; - - len -= skip; - for (; skip && m; m = m->m_next) { - if (m->m_len > skip) { - mlen = m->m_len - skip; - addr = mtod(m, caddr_t) + skip; - goto skip_start; - } else { - skip -= m->m_len; - } - } - - for (; m && len; m = m->m_next) { - if (m->m_len == 0) - continue; - mlen = m->m_len; - addr = mtod(m, caddr_t); -skip_start: - if (len < mlen) - mlen = len; - if ((clen ^ (long) addr) & 1) - sum += in_cksumdata((const u_int32_t *)addr, mlen) << 8; - else - sum += in_cksumdata((const u_int32_t *)addr, mlen); - - clen += mlen; - len -= mlen; - } - REDUCE16; - return (~sum & 0xffff); -} - -u_int in_cksum_hdr(const struct ip *ip) -{ - u_int64_t sum = in_cksumdata((const u_int32_t *)ip, sizeof(struct ip)); - union q_util q_util; - union l_util l_util; - - REDUCE16; - return (~sum & 0xffff); -} -#else - /* * These asm statements require __volatile because they pass information * via the condition codes. GCC does not currently provide a way to specify @@ -490,4 +299,3 @@ skip_start: REDUCE; return (~sum & 0xffff); } -#endif diff --git a/sys/i386/i386/npx.c b/sys/i386/i386/npx.c index dc04d84b0eb5..307099925f23 100644 --- a/sys/i386/i386/npx.c +++ b/sys/i386/i386/npx.c @@ -79,8 +79,6 @@ __FBSDID("$FreeBSD$"); * 387 and 287 Numeric Coprocessor Extension (NPX) Driver. */ -#if defined(__GNUCLIKE_ASM) && !defined(lint) - #define fldcw(cw) __asm __volatile("fldcw %0" : : "m" (cw)) #define fnclex() __asm __volatile("fnclex") #define fninit() __asm __volatile("fninit") @@ -126,25 +124,6 @@ xsaveopt(char *addr, uint64_t mask) __asm __volatile("xsaveopt %0" : "=m" (*addr) : "a" (low), "d" (hi) : "memory"); } -#else /* !(__GNUCLIKE_ASM && !lint) */ - -void fldcw(u_short cw); -void fnclex(void); -void fninit(void); -void fnsave(caddr_t addr); -void fnstcw(caddr_t addr); -void fnstsw(caddr_t addr); -void fp_divide_by_0(void); -void frstor(caddr_t addr); -void fxsave(caddr_t addr); -void fxrstor(caddr_t addr); -void ldmxcsr(u_int csr); -void stmxcsr(u_int *csr); -void xrstor(char *addr, uint64_t mask); -void xsave(char *addr, uint64_t mask); -void xsaveopt(char *addr, uint64_t mask); - -#endif /* __GNUCLIKE_ASM && !lint */ #define start_emulating() load_cr0(rcr0() | CR0_TS) #define stop_emulating() clts() diff --git a/sys/i386/include/atomic.h b/sys/i386/include/atomic.h index 154144a470c6..af6d323e0396 100644 --- a/sys/i386/include/atomic.h +++ b/sys/i386/include/atomic.h @@ -96,42 +96,6 @@ __mbu(void) * atomic_readandclear_long(P) (return (*(u_long *)(P)); *(u_long *)(P) = 0;) */ -#if !defined(__GNUCLIKE_ASM) -#define ATOMIC_ASM(NAME, TYPE, OP, CONS, V) \ -void atomic_##NAME##_##TYPE(volatile u_##TYPE *p, u_##TYPE v); \ -void atomic_##NAME##_barr_##TYPE(volatile u_##TYPE *p, u_##TYPE v) - -int atomic_cmpset_char(volatile u_char *dst, u_char expect, u_char src); -int atomic_cmpset_short(volatile u_short *dst, u_short expect, u_short src); -int atomic_cmpset_int(volatile u_int *dst, u_int expect, u_int src); -int atomic_fcmpset_char(volatile u_char *dst, u_char *expect, u_char src); -int atomic_fcmpset_short(volatile u_short *dst, u_short *expect, - u_short src); -int atomic_fcmpset_int(volatile u_int *dst, u_int *expect, u_int src); -u_int atomic_fetchadd_int(volatile u_int *p, u_int v); -int atomic_testandset_int(volatile u_int *p, u_int v); -int atomic_testandclear_int(volatile u_int *p, u_int v); -void atomic_thread_fence_acq(void); -void atomic_thread_fence_acq_rel(void); -void atomic_thread_fence_rel(void); -void atomic_thread_fence_seq_cst(void); - -#define ATOMIC_LOAD(TYPE) \ -u_##TYPE atomic_load_acq_##TYPE(volatile u_##TYPE *p) -#define ATOMIC_STORE(TYPE) \ -void atomic_store_rel_##TYPE(volatile u_##TYPE *p, u_##TYPE v) - -int atomic_cmpset_64(volatile uint64_t *, uint64_t, uint64_t); -int atomic_fcmpset_64(volatile uint64_t *, uint64_t *, uint64_t); -uint64_t atomic_load_acq_64(volatile uint64_t *); -void atomic_store_rel_64(volatile uint64_t *, uint64_t); -uint64_t atomic_swap_64(volatile uint64_t *, uint64_t); -uint64_t atomic_fetchadd_64(volatile uint64_t *, uint64_t); -void atomic_add_64(volatile uint64_t *, uint64_t); -void atomic_subtract_64(volatile uint64_t *, uint64_t); - -#else /* !__GNUCLIKE_ASM */ - /* * Always use lock prefixes. The result is slighly less optimal for * UP systems, but it matters less now, and sometimes UP is emulated @@ -622,8 +586,6 @@ atomic_subtract_64(volatile uint64_t *p, uint64_t v) #endif /* _KERNEL */ -#endif /* !__GNUCLIKE_ASM */ - ATOMIC_ASM(set, char, "orb %b1,%0", "iq", v); ATOMIC_ASM(clear, char, "andb %b1,%0", "iq", ~v); ATOMIC_ASM(add, char, "addb %b1,%0", "iq", v); @@ -698,8 +660,6 @@ atomic_testandclear_long(volatile u_long *p, u_int v) } /* Read the current value and store a new value in the destination. */ -#ifdef __GNUCLIKE_ASM - static __inline u_int atomic_swap_int(volatile u_int *p, u_int v) { @@ -719,13 +679,6 @@ atomic_swap_long(volatile u_long *p, u_long v) return (atomic_swap_int((volatile u_int *)p, (u_int)v)); } -#else /* !__GNUCLIKE_ASM */ - -u_int atomic_swap_int(volatile u_int *p, u_int v); -u_long atomic_swap_long(volatile u_long *p, u_long v); - -#endif /* __GNUCLIKE_ASM */ - #define atomic_set_acq_char atomic_set_barr_char #define atomic_set_rel_char atomic_set_barr_char #define atomic_clear_acq_char atomic_clear_barr_char diff --git a/sys/i386/include/cpufunc.h b/sys/i386/include/cpufunc.h index 79cdd3004b77..59ee9331cf9f 100644 --- a/sys/i386/include/cpufunc.h +++ b/sys/i386/include/cpufunc.h @@ -54,7 +54,7 @@ struct region_descriptor; #define writew(va, d) (*(volatile uint16_t *) (va) = (d)) #define writel(va, d) (*(volatile uint32_t *) (va) = (d)) -#if defined(__GNUCLIKE_ASM) && defined(__CC_SUPPORTS___INLINE) +#if defined(__CC_SUPPORTS___INLINE) static __inline void breakpoint(void) @@ -774,7 +774,7 @@ wrpkru(uint32_t mask) __asm __volatile("wrpkru" : : "a" (mask), "c" (0), "d" (0)); } -#else /* !(__GNUCLIKE_ASM && __CC_SUPPORTS___INLINE) */ +#else /* !__CC_SUPPORTS___INLINE */ int breakpoint(void); u_int bsfl(u_int mask); @@ -844,7 +844,7 @@ void write_cyrix_reg(u_char reg, u_char data); void write_eflags(u_int ef); void wrmsr(u_int msr, uint64_t newval); -#endif /* __GNUCLIKE_ASM && __CC_SUPPORTS___INLINE */ +#endif /* __CC_SUPPORTS___INLINE */ void reset_dbregs(void); diff --git a/sys/i386/include/ieeefp.h b/sys/i386/include/ieeefp.h index 1d92014e9209..133c40cb271e 100644 --- a/sys/i386/include/ieeefp.h +++ b/sys/i386/include/ieeefp.h @@ -44,8 +44,6 @@ #include -#ifdef __GNUCLIKE_ASM - static __inline fp_rnd_t fpgetround(void) { @@ -156,6 +154,4 @@ fpresetsticky(fp_except_t _m) return (_p); } -#endif /* __GNUCLIKE_ASM */ - #endif /* !_MACHINE_IEEEFP_H_ */ diff --git a/sys/i386/include/in_cksum.h b/sys/i386/include/in_cksum.h index 84e369cf3c81..ac6049719364 100644 --- a/sys/i386/include/in_cksum.h +++ b/sys/i386/include/in_cksum.h @@ -47,7 +47,6 @@ * in the normal case (where there are no options and the header length is * therefore always exactly five 32-bit words. */ -#if defined(__GNUCLIKE_ASM) #if defined(IPVERSION) && (IPVERSION == 4) static __inline u_int in_cksum_hdr(const struct ip *ip) @@ -107,19 +106,11 @@ in_pseudo(u_int sum, u_int b, u_int c) sum -= 0xffff; return (sum); } -#endif #ifdef _KERNEL #define HAVE_MD_IN_CKSUM -#if !defined(__GNUCLIKE_ASM) -#if defined(IPVERSION) && (IPVERSION == 4) -u_int in_cksum_hdr(const struct ip *ip); -#endif -u_short in_addword(u_short sum, u_short b); -u_short in_pseudo(u_int sum, u_int b, u_int c); -#endif u_short in_cksum_skip(struct mbuf *m, int len, int skip); #endif /* _KERNEL */ diff --git a/sys/i386/include/pcpu.h b/sys/i386/include/pcpu.h index a4c7968ea85f..c4099f04ded1 100644 --- a/sys/i386/include/pcpu.h +++ b/sys/i386/include/pcpu.h @@ -99,7 +99,7 @@ _Static_assert(sizeof(struct monitorbuf) == 128, "2x cache line"); #define MONITOR_STOPSTATE_RUNNING 0 #define MONITOR_STOPSTATE_STOPPED 1 -#if defined(__GNUCLIKE_ASM) && defined(__GNUCLIKE___TYPEOF) +#if defined(__GNUCLIKE___TYPEOF) /* * Evaluates to the byte offset of the per-cpu variable name. @@ -206,11 +206,11 @@ _Static_assert(sizeof(struct monitorbuf) == 128, "2x cache line"); #define IS_BSP() (PCPU_GET(cpuid) == 0) -#else /* defined(__GNUCLIKE_ASM) && defined(__GNUCLIKE___TYPEOF) */ +#else /* defined(__GNUCLIKE___TYPEOF) */ #error "this file needs to be ported to your compiler" -#endif /* __GNUCLIKE_ASM etc. */ +#endif /* __GNUCLIKE___TYPEOF */ #endif /* _KERNEL */ diff --git a/sys/i386/include/profile.h b/sys/i386/include/profile.h index 8bb3c7af748c..e834abe33c37 100644 --- a/sys/i386/include/profile.h +++ b/sys/i386/include/profile.h @@ -43,7 +43,6 @@ #define _MCOUNT_DECL static __inline void _mcount -#ifdef __GNUCLIKE_ASM #define MCOUNT \ void \ mcount() \ @@ -75,9 +74,6 @@ mcount() \ _mcount(frompc, selfpc); \ __asm("" : : "c" (ecx)); \ } -#else /* !__GNUCLIKE_ASM */ -#define MCOUNT -#endif /* __GNUCLIKE_ASM */ typedef u_int uintfptr_t; @@ -88,9 +84,7 @@ typedef u_int uintfptr_t; typedef u_int fptrdiff_t; __BEGIN_DECLS -#ifdef __GNUCLIKE_ASM void mcount(void) __asm(".mcount"); -#endif __END_DECLS #endif /* !_KERNEL */ diff --git a/sys/x86/include/bus.h b/sys/x86/include/bus.h index 9522e5db7c78..ccd4ba26e387 100644 --- a/sys/x86/include/bus.h +++ b/sys/x86/include/bus.h @@ -103,10 +103,6 @@ #include #include -#ifndef __GNUCLIKE_ASM -#error "no assembler code for your compiler" -#endif - /* * Values for the x86 bus space tag, not to be used directly by MI code. */ @@ -285,7 +281,6 @@ bus_space_read_multi_1(bus_space_tag_t tag, bus_space_handle_t bsh, if (tag == X86_BUS_SPACE_IO) insb(bsh + offset, addr, count); else { -#ifdef __GNUCLIKE_ASM __asm __volatile(" \n\ 1: movb (%2),%%al \n\ stosb \n\ @@ -293,7 +288,6 @@ bus_space_read_multi_1(bus_space_tag_t tag, bus_space_handle_t bsh, "=D" (addr), "=c" (count) : "r" (bsh + offset), "0" (addr), "1" (count) : "%eax", "memory"); -#endif } } @@ -305,7 +299,6 @@ bus_space_read_multi_2(bus_space_tag_t tag, bus_space_handle_t bsh, if (tag == X86_BUS_SPACE_IO) insw(bsh + offset, addr, count); else { -#ifdef __GNUCLIKE_ASM __asm __volatile(" \n\ 1: movw (%2),%%ax \n\ stosw \n\ @@ -313,7 +306,6 @@ bus_space_read_multi_2(bus_space_tag_t tag, bus_space_handle_t bsh, "=D" (addr), "=c" (count) : "r" (bsh + offset), "0" (addr), "1" (count) : "%eax", "memory"); -#endif } } @@ -325,7 +317,6 @@ bus_space_read_multi_4(bus_space_tag_t tag, bus_space_handle_t bsh, if (tag == X86_BUS_SPACE_IO) insl(bsh + offset, addr, count); else { -#ifdef __GNUCLIKE_ASM __asm __volatile(" \n\ 1: movl (%2),%%eax \n\ stosl \n\ @@ -333,7 +324,6 @@ bus_space_read_multi_4(bus_space_tag_t tag, bus_space_handle_t bsh, "=D" (addr), "=c" (count) : "r" (bsh + offset), "0" (addr), "1" (count) : "%eax", "memory"); -#endif } } @@ -368,7 +358,6 @@ bus_space_read_region_1(bus_space_tag_t tag, bus_space_handle_t bsh, if (tag == X86_BUS_SPACE_IO) { int _port_ = bsh + offset; -#ifdef __GNUCLIKE_ASM __asm __volatile(" \n\ 1: inb %w2,%%al \n\ stosb \n\ @@ -377,17 +366,14 @@ bus_space_read_region_1(bus_space_tag_t tag, bus_space_handle_t bsh, "=D" (addr), "=c" (count), "=d" (_port_) : "0" (addr), "1" (count), "2" (_port_) : "%eax", "memory", "cc"); -#endif } else { bus_space_handle_t _port_ = bsh + offset; -#ifdef __GNUCLIKE_ASM __asm __volatile(" \n\ repne \n\ movsb" : "=D" (addr), "=c" (count), "=S" (_port_) : "0" (addr), "1" (count), "2" (_port_) : "memory", "cc"); -#endif *** 252 LINES SKIPPED ***