Push two registers to keep stack aligned.
This commit is contained in:
parent
3444a5b35b
commit
7eb7e9aa67
@ -1,4 +1,4 @@
|
||||
/* $NetBSD: atomic_add_64.S,v 1.7 2013/08/11 04:41:17 matt Exp $ */
|
||||
/* $NetBSD: atomic_add_64.S,v 1.8 2013/08/20 07:52:31 matt Exp $ */
|
||||
/*-
|
||||
* Copyright (c) 2012 The NetBSD Foundation, Inc.
|
||||
* All rights reserved.
|
||||
@ -33,7 +33,7 @@
|
||||
#ifdef _ARM_ARCH_6
|
||||
|
||||
ENTRY_NP(_atomic_add_64_nv)
|
||||
push {r4} /* save temporary */
|
||||
push {r3,r4} /* save temporary */
|
||||
mov ip, r0 /* need r0 for return value */
|
||||
#ifndef __ARM_EABI__
|
||||
mov r3, r2
|
||||
@ -50,7 +50,7 @@ ENTRY_NP(_atomic_add_64_nv)
|
||||
#else
|
||||
mcr p15, 0, r4, c7, c10, 5 /* data memory barrier */
|
||||
#endif
|
||||
pop {r4} /* restore temporary */
|
||||
pop {r3,r4} /* restore temporary */
|
||||
RET /* return new value */
|
||||
END(_atomic_add_64_nv)
|
||||
|
||||
|
@ -1,4 +1,4 @@
|
||||
/* $NetBSD: atomic_and_64.S,v 1.6 2013/08/11 04:41:17 matt Exp $ */
|
||||
/* $NetBSD: atomic_and_64.S,v 1.7 2013/08/20 07:52:31 matt Exp $ */
|
||||
/*-
|
||||
* Copyright (c) 2012 The NetBSD Foundation, Inc.
|
||||
* All rights reserved.
|
||||
@ -33,7 +33,7 @@
|
||||
#ifdef _ARM_ARCH_6
|
||||
|
||||
ENTRY_NP(_atomic_and_64_nv)
|
||||
push {r4} /* save temporary */
|
||||
push {r3,r4} /* save temporary */
|
||||
#ifndef __ARM_EABI__
|
||||
mov r3, r2
|
||||
mov r2, r1
|
||||
@ -50,7 +50,7 @@ ENTRY_NP(_atomic_and_64_nv)
|
||||
#else
|
||||
mcr p15, 0, r4, c7, c10, 5 /* data memory barrier */
|
||||
#endif
|
||||
pop {r4} /* restore temporary */
|
||||
pop {r3,r4} /* restore temporary */
|
||||
RET /* return new value */
|
||||
END(_atomic_and_64_nv)
|
||||
|
||||
|
@ -1,4 +1,4 @@
|
||||
/* $NetBSD: atomic_or_64.S,v 1.6 2013/08/11 04:41:17 matt Exp $ */
|
||||
/* $NetBSD: atomic_or_64.S,v 1.7 2013/08/20 07:52:31 matt Exp $ */
|
||||
/*-
|
||||
* Copyright (c) 2012 The NetBSD Foundation, Inc.
|
||||
* All rights reserved.
|
||||
@ -33,7 +33,7 @@
|
||||
#ifdef _ARM_ARCH_6
|
||||
|
||||
ENTRY_NP(_atomic_or_64_nv)
|
||||
push {r4} /* save temporary */
|
||||
push {r3,r4} /* save temporary */
|
||||
#ifndef __ARM_EABI__
|
||||
mov r3, r2
|
||||
mov r2, r1
|
||||
@ -50,7 +50,7 @@ ENTRY_NP(_atomic_or_64_nv)
|
||||
#else
|
||||
mcr p15, 0, r4, c7, c10, 5 /* data memory barrier */
|
||||
#endif
|
||||
pop {r4} /* restore temporary */
|
||||
pop {r3,r4} /* restore temporary */
|
||||
RET /* return new value */
|
||||
END(_atomic_or_64_nv)
|
||||
|
||||
|
@ -1,4 +1,4 @@
|
||||
/* $NetBSD: atomic_swap_64.S,v 1.4 2013/08/10 19:59:21 matt Exp $ */
|
||||
/* $NetBSD: atomic_swap_64.S,v 1.5 2013/08/20 07:52:31 matt Exp $ */
|
||||
/*-
|
||||
* Copyright (c) 2012 The NetBSD Foundation, Inc.
|
||||
* All rights reserved.
|
||||
@ -31,7 +31,7 @@
|
||||
#include "atomic_op_asm.h"
|
||||
|
||||
ENTRY_NP(_atomic_swap_64)
|
||||
push {r4} /* save temporary */
|
||||
push {r3,r4} /* save temporary */
|
||||
mov ip, r0 /* return value will be in r0 */
|
||||
#ifndef __ARM_EABI__
|
||||
mov r3, r2 /* r2 will be overwriten by r1 */
|
||||
@ -46,7 +46,7 @@ ENTRY_NP(_atomic_swap_64)
|
||||
#else
|
||||
mcr p15, 0, r4, c7, c10, 5 /* data memory barrier */
|
||||
#endif
|
||||
pop {r4} /* restore temporary */
|
||||
pop {r3,r4} /* restore temporary */
|
||||
RET
|
||||
END(_atomic_swap_64)
|
||||
ATOMIC_OP_ALIAS(atomic_swap_64,_atomic_swap_64)
|
||||
|
Loading…
Reference in New Issue
Block a user