From 59f94406859694be7f99867ed1c8865531cc4ee1 Mon Sep 17 00:00:00 2001 From: mpi Date: Sat, 10 Feb 2018 09:21:12 +0000 Subject: [PATCH] Remove now unused assembly mutex code. ok mlarkin@, deraadt@ --- sys/arch/amd64/amd64/genassym.cf | 7 +- sys/arch/amd64/amd64/mutex.S | 170 ----------------------------- sys/arch/i386/i386/genassym.cf | 7 +- sys/arch/i386/i386/mutex.S | 179 ------------------------------- 4 files changed, 2 insertions(+), 361 deletions(-) delete mode 100644 sys/arch/amd64/amd64/mutex.S delete mode 100644 sys/arch/i386/i386/mutex.S diff --git a/sys/arch/amd64/amd64/genassym.cf b/sys/arch/amd64/amd64/genassym.cf index 88f0212fe1b..f72dd494c9b 100644 --- a/sys/arch/amd64/amd64/genassym.cf +++ b/sys/arch/amd64/amd64/genassym.cf @@ -1,4 +1,4 @@ -# $OpenBSD: genassym.cf,v 1.32 2018/01/22 10:04:46 mpi Exp $ +# $OpenBSD: genassym.cf,v 1.33 2018/02/10 09:21:12 mpi Exp $ # Written by Artur Grabowski art@openbsd.org, Public Domain include @@ -139,11 +139,6 @@ struct ioapic_softc member IOAPIC_SC_REG sc_reg member IOAPIC_SC_DATA sc_data -struct mutex -member mtx_wantipl -member mtx_oldipl -member mtx_owner - # pte fields export PG_V export PG_KR diff --git a/sys/arch/amd64/amd64/mutex.S b/sys/arch/amd64/amd64/mutex.S deleted file mode 100644 index f864c41d534..00000000000 --- a/sys/arch/amd64/amd64/mutex.S +++ /dev/null @@ -1,170 +0,0 @@ -/* $OpenBSD: mutex.S,v 1.13 2017/06/29 17:17:28 deraadt Exp $ */ - -/* - * Copyright (c) 2004 Artur Grabowski - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. The name of the author may not be used to endorse or promote products - * derived from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, - * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY - * AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL - * THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; - * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, - * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR - * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF - * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ - -#include "assym.h" - -#include -#include -#include -#include -#include -#include - -/* - * Yeah, we don't really need to implement mtx_init here, but let's keep - * all the functions in the same place. - */ -ENTRY(__mtx_init) - movl %esi, MTX_WANTIPL(%rdi) - movl $0, MTX_OLDIPL(%rdi) - movq $0, MTX_OWNER(%rdi) - ret - -ENTRY(__mtx_enter) -1: movl MTX_WANTIPL(%rdi), %eax - movq CPUVAR(SELF), %rcx - movl CPU_INFO_ILEVEL(%rcx), %edx # oipl = cpl; - cmpl %eax, %edx # if (cpl < mtx->mtx_wantipl) - cmovge %edx, %eax - movl %eax, CPU_INFO_ILEVEL(%rcx) # cpl = mtx->mtx_wantipl; - /* - * %edx - the old ipl - * %rcx - curcpu() - */ - xorq %rax, %rax -#ifdef MULTIPROCESSOR - lock -#endif - cmpxchgq %rcx, MTX_OWNER(%rdi) # test_and_set(mtx->mtx_owner) - jne 2f - movl %edx, MTX_OLDIPL(%rdi) -#ifdef DIAGNOSTIC - incl CPU_INFO_MUTEX_LEVEL(%rcx) -#endif - ret - - /* We failed to obtain the lock. splx, spin and retry. */ -2: pushq %rdi - movl %edx, %edi - call _C_LABEL(spllower) - popq %rdi -3: - pause -#ifdef DIAGNOSTIC - movq CPUVAR(SELF), %rcx - cmpq MTX_OWNER(%rdi), %rcx - je 4f -#endif - movq MTX_OWNER(%rdi), %rax - testq %rax, %rax - jz 1b - jmp 3b -#ifdef DIAGNOSTIC -4: movq $mtx_lockingself, %rdi - call _C_LABEL(panic) - - .section .rodata -mtx_lockingself: - .asciz "mtx_enter: locking against myself" - .text -#endif - -ENTRY(__mtx_enter_try) -1: movl MTX_WANTIPL(%rdi), %eax - movq CPUVAR(SELF), %rcx - movl CPU_INFO_ILEVEL(%rcx), %edx # oipl = cpl; - cmpl %eax, %edx # if (cpl < mtx->mtx_wantipl) - cmovge %edx, %eax - movl %eax, CPU_INFO_ILEVEL(%rcx) # cpl = mtx->mtx_wantipl; - /* - * %edx - the old ipl - * %rcx - curcpu() - */ - xorq %rax, %rax -#ifdef MULTIPROCESSOR - lock -#endif - cmpxchgq %rcx, MTX_OWNER(%rdi) # test_and_set(mtx->mtx_owner) - jne 2f - movl %edx, MTX_OLDIPL(%rdi) -#ifdef DIAGNOSTIC - incl CPU_INFO_MUTEX_LEVEL(%rcx) -#endif - movq $1, %rax - ret - - /* We failed to obtain the lock. splx and return 0. */ -2: pushq %rdi - movl %edx, %edi - call _C_LABEL(spllower) - popq %rdi -#ifdef DIAGNOSTIC - movq CPUVAR(SELF), %rcx - cmpq MTX_OWNER(%rdi), %rcx - je 3f -#endif - xorq %rax, %rax - ret - -#ifdef DIAGNOSTIC -3: movq $mtx_lockingtry, %rdi - call _C_LABEL(panic) - - .section .rodata -mtx_lockingtry: - .asciz "mtx_enter_try: locking against myself" - .text -#endif - - -ENTRY(__mtx_leave) - movq %rdi, %rax -#ifdef DIAGNOSTIC - movq CPUVAR(SELF), %rcx - cmpq MTX_OWNER(%rax), %rcx - jne 2f - decl CPU_INFO_MUTEX_LEVEL(%rcx) -#endif - xorq %rcx, %rcx - movl MTX_OLDIPL(%rax), %edi - movl %ecx, MTX_OLDIPL(%rax) - movq %rcx, MTX_OWNER(%rax) - cmpl %edi, CPUVAR(ILEVEL) - je 1f - call _C_LABEL(spllower) -1: - ret - -#ifdef DIAGNOSTIC -2: movq $mtx_leave_held, %rdi - call _C_LABEL(panic) - - .section .rodata -mtx_leave_held: - .asciz "mtx_leave: lock not held" - .text -#endif diff --git a/sys/arch/i386/i386/genassym.cf b/sys/arch/i386/i386/genassym.cf index 877df6313ce..ecb90f652c1 100644 --- a/sys/arch/i386/i386/genassym.cf +++ b/sys/arch/i386/i386/genassym.cf @@ -1,4 +1,4 @@ -# $OpenBSD: genassym.cf,v 1.41 2018/01/22 10:04:46 mpi Exp $ +# $OpenBSD: genassym.cf,v 1.42 2018/02/10 09:21:12 mpi Exp $ # # Copyright (c) 1982, 1990 The Regents of the University of California. # All rights reserved. @@ -135,11 +135,6 @@ member IH_COUNT ih_count.ec_count member ih_next endif -struct mutex -member mtx_wantipl -member mtx_oldipl -member mtx_owner - define IP_SRC offsetof(struct ip, ip_src) define IP_DST offsetof(struct ip, ip_dst) diff --git a/sys/arch/i386/i386/mutex.S b/sys/arch/i386/i386/mutex.S deleted file mode 100644 index c00fee7332a..00000000000 --- a/sys/arch/i386/i386/mutex.S +++ /dev/null @@ -1,179 +0,0 @@ -/* $OpenBSD: mutex.S,v 1.12 2017/06/29 17:17:28 deraadt Exp $ */ - -/* - * Copyright (c) 2004 Artur Grabowski - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. The name of the author may not be used to endorse or promote products - * derived from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, - * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY - * AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL - * THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; - * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, - * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR - * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF - * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ - -#include "assym.h" -/* - * Yeah, we don't really need to implement mtx_init here, but let's keep - * all the functions in the same place. - */ -ENTRY(__mtx_init) - pushl %ebp - movl %esp, %ebp - movl 8(%esp), %eax - movl 12(%esp), %edx - movl %edx, MTX_WANTIPL(%eax) - xorl %edx, %edx - movl %edx, MTX_OLDIPL(%eax) - movl %edx, MTX_LOCK(%eax) - movl %edx, MTX_OWNER(%eax) - leave - ret - -#define SOFF 8 - -ENTRY(__mtx_enter) - pushl %ebp - movl %esp, %ebp -1: movl SOFF(%ebp), %ecx - movl MTX_WANTIPL(%ecx), %eax - movl CPL, %edx # oipl = cpl; - cmpl %edx, %eax # if (cpl < mtx->mtx_wantipl) - jle 2f - movl %eax, CPL # cpl = mtx->mtx_wantipl; -2: /* - * %edx now contains the oldipl. - * %ecx contains the mtx. - */ - movl $1, %eax - xchgl %eax, MTX_LOCK(%ecx) # test_and_set(mtx->mtx_lock) - testl %eax, %eax # if (already held) - jnz 3f - movl CPUVAR(SELF), %eax -#ifdef DIAGNOSTIC - incl CPU_INFO_MUTEX_LEVEL(%eax) -#endif - movl %eax, MTX_OWNER(%ecx) - movl %edx, MTX_OLDIPL(%ecx) - leave - ret - - /* We failed to obtain the lock. splx, spin and retry. */ -3: pushl %edx - call _C_LABEL(splx) - movl %ebp, %esp - movl SOFF(%ebp), %ecx # %ecx clobbered -4: - pause -#ifdef DIAGNOSTIC - movl CPUVAR(SELF), %edx - cmpl MTX_OWNER(%ecx), %edx - je 5f -#endif - movl MTX_LOCK(%ecx), %eax - testl %eax, %eax - jz 1b - jmp 4b -#ifdef DIAGNOSTIC -5: pushl $mtx_lockingself - call _C_LABEL(panic) - - .section .rodata -mtx_lockingself: - .asciz "mtx_enter: locking against myself" - .text -#endif - -ENTRY(__mtx_enter_try) - pushl %ebp - movl %esp, %ebp -1: movl SOFF(%ebp), %ecx - movl MTX_WANTIPL(%ecx), %eax - movl CPL, %edx # oipl = cpl; - cmpl %edx, %eax # if (cpl < mtx->mtx_wantipl) - jle 2f - movl %eax, CPL # cpl = mtx->mtx_wantipl; -2: /* - * %edx now contains the oldipl. - * %ecx contains the mtx. - */ - movl $1, %eax - xchgl %eax, MTX_LOCK(%ecx) # test_and_set(mtx->mtx_lock) - testl %eax, %eax # if (already held) - jnz 3f - movl CPUVAR(SELF), %eax -#ifdef DIAGNOSTIC - incl CPU_INFO_MUTEX_LEVEL(%eax) -#endif - movl %eax, MTX_OWNER(%ecx) - movl %edx, MTX_OLDIPL(%ecx) - movl $1, %eax - leave - ret - - /* We failed to obtain the lock. splx and return zero. */ -3: pushl %edx - call _C_LABEL(splx) - movl %ebp, %esp - movl SOFF(%ebp), %ecx # %ecx clobbered -#ifdef DIAGNOSTIC - movl CPUVAR(SELF), %edx - cmpl MTX_OWNER(%ecx), %edx - je 4f -#endif - xorl %eax, %eax - leave - ret - -#ifdef DIAGNOSTIC -4: pushl $mtx_lockingtry - call _C_LABEL(panic) - - .section .rodata -mtx_lockingtry: - .asciz "mtx_enter_try: locking against myself" - .text -#endif - - -ENTRY(__mtx_leave) - pushl %ebp - movl %esp, %ebp - movl SOFF(%ebp), %ecx -#ifdef DIAGNOSTIC - movl CPUVAR(SELF), %eax - cmpl %eax, MTX_OWNER(%ecx) - jne 1f - decl CPU_INFO_MUTEX_LEVEL(%eax) -#endif - xorl %eax, %eax - movl %eax, MTX_OWNER(%ecx) - pushl MTX_OLDIPL(%ecx) - movl %eax, MTX_OLDIPL(%ecx) - movl %eax, MTX_LOCK(%ecx) - call _C_LABEL(splx) - leave - ret - -#ifdef DIAGNOSTIC -1: pushl $mtx_leave_held - call _C_LABEL(panic) - - .section .rodata -mtx_leave_held: - .asciz "mtx_leave: lock not held" - .text -#endif -- 2.20.1