Make sure _atomic_cas_fn is initialised for "weirdo environments" such
as ramdisks where the constructor doesn't get called. Fixes ifconfig in hp700 sysinst. OK'ed by ad.
This commit is contained in:
parent
29358e4ac0
commit
5dbd6a69ca
|
@ -1,4 +1,4 @@
|
|||
/* $NetBSD: atomic_init_testset.c,v 1.5 2008/04/29 20:57:50 scw Exp $ */
|
||||
/* $NetBSD: atomic_init_testset.c,v 1.6 2009/01/30 14:29:44 skrll Exp $ */
|
||||
|
||||
/*-
|
||||
* Copyright (c) 2008 The NetBSD Foundation, Inc.
|
||||
|
@ -36,7 +36,7 @@
|
|||
*/
|
||||
|
||||
#include <sys/cdefs.h>
|
||||
__RCSID("$NetBSD: atomic_init_testset.c,v 1.5 2008/04/29 20:57:50 scw Exp $");
|
||||
__RCSID("$NetBSD: atomic_init_testset.c,v 1.6 2009/01/30 14:29:44 skrll Exp $");
|
||||
|
||||
#include "atomic_op_namespace.h"
|
||||
|
||||
|
@ -53,15 +53,21 @@ __RCSID("$NetBSD: atomic_init_testset.c,v 1.5 2008/04/29 20:57:50 scw Exp $");
|
|||
#define I128 I16 I16 I16 I16 I16 I16 I16 I16
|
||||
|
||||
static __cpu_simple_lock_t atomic_locks[128] = { I128 };
|
||||
static uint32_t (*_atomic_cas_fn)(volatile uint32_t *, uint32_t, uint32_t);
|
||||
|
||||
#ifdef __HAVE_ASM_ATOMIC_CAS_UP
|
||||
extern uint32_t _atomic_cas_up(volatile uint32_t *, uint32_t, uint32_t);
|
||||
#else
|
||||
static uint32_t _atomic_cas_up(volatile uint32_t *, uint32_t, uint32_t);
|
||||
#endif
|
||||
|
||||
static uint32_t (*_atomic_cas_fn)(volatile uint32_t *, uint32_t, uint32_t) =
|
||||
_atomic_cas_up;
|
||||
|
||||
void __libc_atomic_init(void) __attribute__ ((visibility("hidden")));
|
||||
|
||||
RAS_DECL(_atomic_cas);
|
||||
|
||||
#ifdef __HAVE_ASM_ATOMIC_CAS_UP
|
||||
extern uint32_t _atomic_cas_up(volatile uint32_t *, uint32_t, uint32_t);
|
||||
#else
|
||||
#ifndef __HAVE_ASM_ATOMIC_CAS_UP
|
||||
static uint32_t
|
||||
_atomic_cas_up(volatile uint32_t *ptr, uint32_t old, uint32_t new)
|
||||
{
|
||||
|
|
Loading…
Reference in New Issue