From: mpi Date: Sat, 10 Feb 2018 12:44:20 +0000 (+0000) Subject: Convert armv7 to MI mutex. X-Git-Url: http://artulab.com/gitweb/?a=commitdiff_plain;h=56d5d54e9fe227757eea3ec421f7b2d919e68617;p=openbsd Convert armv7 to MI mutex. Tested by jsg@, ok patrick@ --- diff --git a/sys/arch/arm/armv7/armv7_mutex.c b/sys/arch/arm/armv7/armv7_mutex.c deleted file mode 100644 index 8edc76a0d3e..00000000000 --- a/sys/arch/arm/armv7/armv7_mutex.c +++ /dev/null @@ -1,94 +0,0 @@ -/* $OpenBSD: armv7_mutex.c,v 1.4 2017/05/18 01:27:49 visa 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 -#include -#include - -#include - -#ifdef MULTIPROCESSOR -#error This code needs work -#endif - - -/* rewrite with the proper lock mechanism */ - -/* - * Single processor systems don't need any mutexes, but they need the spl - * raising semantics of the mutexes. - */ -void -_mtx_init(struct mutex *mtx, int wantipl) -{ - mtx->mtx_oldipl = 0; - mtx->mtx_wantipl = wantipl; - mtx->mtx_lock = 0; -} - -void -__mtx_enter(struct mutex *mtx) -{ - if (mtx->mtx_wantipl != IPL_NONE) - mtx->mtx_oldipl = _splraise(mtx->mtx_wantipl); - - MUTEX_ASSERT_UNLOCKED(mtx); - mtx->mtx_lock = 1; -#ifdef DIAGNOSTIC - curcpu()->ci_mutex_level++; -#endif -} - -int -__mtx_enter_try(struct mutex *mtx) -{ - if (mtx->mtx_wantipl != IPL_NONE) - mtx->mtx_oldipl = _splraise(mtx->mtx_wantipl); - - if (mtx->mtx_lock) { - splx(mtx->mtx_oldipl); - return 0; - } - mtx->mtx_lock = 1; -#ifdef DIAGNOSTIC - curcpu()->ci_mutex_level++; -#endif - - return 1; -} - -void -__mtx_leave(struct mutex *mtx) -{ - MUTEX_ASSERT_LOCKED(mtx); - mtx->mtx_lock = 0; -#ifdef DIAGNOSTIC - curcpu()->ci_mutex_level--; -#endif - if (mtx->mtx_wantipl != IPL_NONE) - splx(mtx->mtx_oldipl); -} diff --git a/sys/arch/arm/conf/files.arm b/sys/arch/arm/conf/files.arm index b694cfe3127..53826b131e4 100644 --- a/sys/arch/arm/conf/files.arm +++ b/sys/arch/arm/conf/files.arm @@ -1,4 +1,4 @@ -# $OpenBSD: files.arm,v 1.47 2018/01/26 16:22:20 kettenis Exp $ +# $OpenBSD: files.arm,v 1.48 2018/02/10 12:44:20 mpi Exp $ # $NetBSD: files.arm,v 1.76 2003/11/05 12:53:15 scw Exp $ # generic networking files @@ -71,7 +71,6 @@ file arch/arm/arm/vm_machdep.c file arch/arm/armv7/armv7_space.c cpu_armv7 file arch/arm/armv7/armv7_a4x_space.c cpu_armv7 file arch/arm/armv7/armv7_a4x_io.S cpu_armv7 -file arch/arm/armv7/armv7_mutex.c cpu_armv7 file arch/arm/armv7/bus_space_asm_armv7.S cpu_armv7 file arch/arm/arm/vfp.c cpu_armv7 diff --git a/sys/arch/arm/include/mutex.h b/sys/arch/arm/include/mutex.h index 1125f8ed569..84cb40e98bf 100644 --- a/sys/arch/arm/include/mutex.h +++ b/sys/arch/arm/include/mutex.h @@ -1,73 +1,3 @@ -/* $OpenBSD: mutex.h,v 1.4 2017/05/18 01:27:49 visa Exp $ */ +/* $OpenBSD: mutex.h,v 1.5 2018/02/10 12:44:20 mpi 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. - */ - -#ifndef _ARM_MUTEX_H_ -#define _ARM_MUTEX_H_ - -#include - -/* - * Simple non-mp implementation. - */ -struct mutex { - int mtx_lock; - int mtx_wantipl; - int mtx_oldipl; -#ifdef WITNESS - struct lock_object mtx_lock_obj; -#endif -}; - -void _mtx_init(struct mutex *, int); - -#ifdef WITNESS -#define MUTEX_INITIALIZER_FLAGS(ipl, name, flags) \ - { 0, ipl, 0, MTX_LO_INITIALIZER(name, flags) } -#else -#define MUTEX_INITIALIZER_FLAGS(ipl, name, flags) \ - { 0, ipl, 0 } -#endif - -#ifdef DIAGNOSTIC -#define MUTEX_ASSERT_LOCKED(mtx) do { \ - if ((mtx)->mtx_lock == 0) \ - panic("mutex %p not held in %s", (mtx), __func__); \ -} while (0) - -#define MUTEX_ASSERT_UNLOCKED(mtx) do { \ - if ((mtx)->mtx_lock != 0) \ - panic("mutex %p held in %s", (mtx), __func__); \ -} while (0) -#else -#define MUTEX_ASSERT_LOCKED(mtx) do { } while (0) -#define MUTEX_ASSERT_UNLOCKED(mtx) do { } while (0) -#endif - -#define MUTEX_LOCK_OBJECT(mtx) (&(mtx)->mtx_lock_obj) -#define MUTEX_OLDIPL(mtx) (mtx)->mtx_oldipl - -#endif +#define __USE_MI_MUTEX