aboutsummaryrefslogtreecommitdiff
path: root/sys/i386/include
diff options
context:
space:
mode:
Diffstat (limited to 'sys/i386/include')
-rw-r--r--sys/i386/include/apic.h24
-rw-r--r--sys/i386/include/apicreg.h24
-rw-r--r--sys/i386/include/atomic.h13
-rw-r--r--sys/i386/include/lock.h87
4 files changed, 57 insertions, 91 deletions
diff --git a/sys/i386/include/apic.h b/sys/i386/include/apic.h
index be9de4f8fe1ff..3d84792ed5046 100644
--- a/sys/i386/include/apic.h
+++ b/sys/i386/include/apic.h
@@ -463,4 +463,28 @@ typedef struct IOAPIC ioapic_t;
#define IOART_INTVEC 0x000000ff /* R/W: INTerrupt vector field */
+#ifdef LOCORE
+
+#ifdef SMP
+
+/*
+ * Protects the IO APIC and apic_imen as a critical region.
+ */
+#define IMASK_LOCK MTX_LOCK_SPIN(_imen_mtx, 0)
+#define IMASK_UNLOCK MTX_UNLOCK_SPIN(_imen_mtx)
+
+#else /* SMP */
+
+#define IMASK_LOCK /* NOP */
+#define IMASK_UNLOCK /* NOP */
+
+#endif /* SMP */
+
+#else /* LOCORE */
+
+/* global data in mp_machdep.c */
+extern struct mtx imen_mtx;
+
+#endif /* LOCORE */
+
#endif /* _MACHINE_APIC_H_ */
diff --git a/sys/i386/include/apicreg.h b/sys/i386/include/apicreg.h
index be9de4f8fe1ff..3d84792ed5046 100644
--- a/sys/i386/include/apicreg.h
+++ b/sys/i386/include/apicreg.h
@@ -463,4 +463,28 @@ typedef struct IOAPIC ioapic_t;
#define IOART_INTVEC 0x000000ff /* R/W: INTerrupt vector field */
+#ifdef LOCORE
+
+#ifdef SMP
+
+/*
+ * Protects the IO APIC and apic_imen as a critical region.
+ */
+#define IMASK_LOCK MTX_LOCK_SPIN(_imen_mtx, 0)
+#define IMASK_UNLOCK MTX_UNLOCK_SPIN(_imen_mtx)
+
+#else /* SMP */
+
+#define IMASK_LOCK /* NOP */
+#define IMASK_UNLOCK /* NOP */
+
+#endif /* SMP */
+
+#else /* LOCORE */
+
+/* global data in mp_machdep.c */
+extern struct mtx imen_mtx;
+
+#endif /* LOCORE */
+
#endif /* _MACHINE_APIC_H_ */
diff --git a/sys/i386/include/atomic.h b/sys/i386/include/atomic.h
index b5035b89e4d47..cb899a62d62f3 100644
--- a/sys/i386/include/atomic.h
+++ b/sys/i386/include/atomic.h
@@ -74,16 +74,18 @@ u_##TYPE atomic_load_acq_##TYPE(volatile u_##TYPE *p); \
void atomic_store_rel_##TYPE(volatile u_##TYPE *p, u_##TYPE v);
#else /* !KLD_MODULE */
+
#if defined(SMP)
#if defined(LOCORE)
#define MPLOCKED lock ;
-#else
+#else /* !LOCORE */
#define MPLOCKED "lock ; "
-#endif
-#else
+#endif /* LOCORE */
+#else /* !SMP */
#define MPLOCKED
-#endif
+#endif /* SMP */
+#if !defined(LOCORE)
/*
* The assembly is volatilized to demark potential before-and-after side
* effects if an interrupt or SMP collision were to occur.
@@ -201,8 +203,10 @@ atomic_store_rel_##TYPE(volatile u_##TYPE *p, u_##TYPE v)\
: : "memory"); \
}
#endif /* defined(I386_CPU) */
+#endif /* !defined(LOCORE) */
#endif /* KLD_MODULE */
+#if !defined(LOCORE)
ATOMIC_ASM(set, char, "orb %b2,%0", v)
ATOMIC_ASM(clear, char, "andb %b2,%0", ~v)
ATOMIC_ASM(add, char, "addb %b2,%0", v)
@@ -401,4 +405,5 @@ atomic_readandclear_long(volatile u_long *addr)
return (result);
}
#endif /* !defined(WANT_FUNCTIONS) */
+#endif /* !defined(LOCORE) */
#endif /* ! _MACHINE_ATOMIC_H_ */
diff --git a/sys/i386/include/lock.h b/sys/i386/include/lock.h
deleted file mode 100644
index 35d1b3dcb05a9..0000000000000
--- a/sys/i386/include/lock.h
+++ /dev/null
@@ -1,87 +0,0 @@
-/*
- * Copyright (c) 1997, by Steve Passe
- * 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 developer may NOT be used to endorse or promote products
- * derived from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``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 OR CONTRIBUTORS 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.
- *
- * $FreeBSD$
- */
-
-
-#ifndef _MACHINE_LOCK_H_
-#define _MACHINE_LOCK_H_
-
-
-#ifdef LOCORE
-
-#ifdef SMP
-
-#define MPLOCKED lock ;
-
-/*
- * Protects the IO APIC and apic_imen as a critical region.
- */
-#define IMASK_LOCK MTX_LOCK_SPIN(_imen_mtx, 0)
-#define IMASK_UNLOCK MTX_UNLOCK_SPIN(_imen_mtx)
-
-#else /* SMP */
-
-#define MPLOCKED /* NOP */
-
-#define IMASK_LOCK /* NOP */
-#define IMASK_UNLOCK /* NOP */
-
-#endif /* SMP */
-
-#else /* LOCORE */
-
-#ifdef SMP
-
-#include <machine/smptests.h> /** xxx_LOCK */
-
-/*
- * sio/cy lock.
- * XXX should rc (RISCom/8) use this?
- */
-#ifdef USE_COMLOCK
-#define COM_LOCK() mtx_lock_spin(&com_mtx)
-#define COM_UNLOCK() mtx_unlock_spin(&com_mtx)
-#else
-#define COM_LOCK()
-#define COM_UNLOCK()
-#endif /* USE_COMLOCK */
-
-#else /* SMP */
-
-#define COM_LOCK()
-#define COM_UNLOCK()
-
-#endif /* SMP */
-
-/* global data in mp_machdep.c */
-extern struct mtx imen_mtx;
-extern struct mtx com_mtx;
-extern struct mtx mcount_mtx;
-extern struct mtx panic_mtx;
-
-#endif /* LOCORE */
-
-#endif /* !_MACHINE_LOCK_H_ */