svn commit: r265758 - projects/arm64/sys/arm64/arm64
Andrew Turner
andrew at FreeBSD.org
Fri May 9 08:20:48 UTC 2014
Author: andrew
Date: Fri May 9 08:20:47 2014
New Revision: 265758
URL: http://svnweb.freebsd.org/changeset/base/265758
Log:
Implement spinlocks
Modified:
projects/arm64/sys/arm64/arm64/machdep.c
Modified: projects/arm64/sys/arm64/arm64/machdep.c
==============================================================================
--- projects/arm64/sys/arm64/arm64/machdep.c Fri May 9 08:18:57 2014 (r265757)
+++ projects/arm64/sys/arm64/arm64/machdep.c Fri May 9 08:20:47 2014 (r265758)
@@ -218,15 +218,31 @@ void cpu_switch(struct thread *old, stru
void
spinlock_enter(void)
{
+ struct thread *td;
+ register_t daif;
- printf("spinlock_enter\n");
+ td = curthread;
+ if (td->td_md.md_spinlock_count == 0) {
+ daif = intr_disable();
+ td->td_md.md_spinlock_count = 1;
+ td->td_md.md_saved_daif = daif;
+ } else
+ td->td_md.md_spinlock_count++;
+ critical_enter();
}
void
spinlock_exit(void)
{
+ struct thread *td;
+ register_t daif;
- printf("spinlock_exit\n");
+ td = curthread;
+ critical_exit();
+ daif = td->td_md.md_saved_daif;
+ td->td_md.md_spinlock_count--;
+ if (td->td_md.md_spinlock_count == 0)
+ intr_restore(daif);
}
#ifndef _SYS_SYSPROTO_H_
More information about the svn-src-projects
mailing list