diff options
| author | matt <matt@NetBSD.org> | 2013-08-15 22:37:29 +0000 |
|---|---|---|
| committer | matt <matt@NetBSD.org> | 2013-08-15 22:37:29 +0000 |
| commit | f021c4bfc09fb17bdc84338eceff71cacdaf80be (patch) | |
| tree | e69971e75d9aa710af5ca88b6fa4cf965b559a00 /lib/libpthread | |
| parent | 47d631c28a30b1f08850ae05a767069862b50121 (diff) | |
Use the thumb1 versions of sev/wfe for thumb && armv6+.
if using armv5t don't do anything for thumb.
Diffstat (limited to 'lib/libpthread')
| -rw-r--r-- | lib/libpthread/arch/arm/pthread_md.h | 10 |
1 files changed, 9 insertions, 1 deletions
diff --git a/lib/libpthread/arch/arm/pthread_md.h b/lib/libpthread/arch/arm/pthread_md.h index 827a75a9d64..153c39fad86 100644 --- a/lib/libpthread/arch/arm/pthread_md.h +++ b/lib/libpthread/arch/arm/pthread_md.h @@ -1,4 +1,4 @@ -/* $NetBSD: pthread_md.h,v 1.8 2012/09/19 07:57:14 matt Exp $ */ +/* $NetBSD: pthread_md.h,v 1.9 2013/08/15 22:37:29 matt Exp $ */ /* * Copyright (c) 2001 Wasabi Systems, Inc. @@ -49,8 +49,16 @@ pthread__sp(void) return (ret); } +#if defined(__thumb__) && defined(_ARM_ARCH_6) +#define pthread__smt_pause() __asm __volatile(".inst.n 0xbf20") /* wfe */ +#define pthread__smt_wake() __asm __volatile(".inst.n 0xbf40") /* sev */ +#elif !defined(__thumb__) #define pthread__smt_pause() __asm __volatile(".inst 0xe320f002") /* wfe */ #define pthread__smt_wake() __asm __volatile(".inst 0xe320f004") /* sev */ +#else +#define pthread__smt_pause() +#define pthread__smt_wake() +#endif #define pthread__uc_sp(ucp) ((ucp)->uc_mcontext.__gregs[_REG_SP]) |
