Use the thumb1 versions of sev/wfe for thumb && armv6+.

if using armv5t don't do anything for thumb.
This commit is contained in:
matt 2013-08-15 22:37:29 +00:00
parent cc12e1319a
commit 77f07e0bd7
1 changed files with 9 additions and 1 deletions

View File

@ -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])