Quellcodebibliothek Statistik Leitseite products/sources/formale Sprachen/C/Linux/arch/csky/kernel/   (Open Source Betriebssystem Version 6.17.9©)  Datei vom 24.10.2025 mit Größe 894 B image not shown  

Quelle  atomic.S   Sprache: Sparc

 
/* SPDX-License-Identifier: GPL-2.0 */
// Copyright (C) 2018 Hangzhou C-SKY Microsystems co.,ltd.

#include <linux/linkage.h>
#include <abi/entry.h>

.text

/*
 * int csky_cmpxchg(int oldval, int newval, int *ptr)
 *
 * If *ptr != oldval && return 1,
 * else *ptr = newval return 0.
 */

ENTRY(csky_cmpxchg)
 USPTOKSP

 RD_MEH a3
 WR_MEH a3

 mfcr a3, epc
 addi a3, TRAP0_SIZE

 subi    sp, 16
 stw     a3, (sp, 0)
 mfcr    a3, epsr
 stw     a3, (sp, 4)
 mfcr a3, usp
 stw     a3, (sp, 8)

 psrset ee
#ifdef CONFIG_CPU_HAS_LDSTEX
1:
 ldex a3, (a2)
 cmpne a0, a3
 bt16 2f
 mov a3, a1
 stex a3, (a2)
 bez a3, 1b
2:
 sync.is
#else
GLOBAL(csky_cmpxchg_ldw)
 ldw a3, (a2)
 cmpne a0, a3
 bt16 3f
GLOBAL(csky_cmpxchg_stw)
 stw a1, (a2)
3:
#endif
 mvc a0
 ldw a3, (sp, 0)
 mtcr a3, epc
 ldw     a3, (sp, 4)
 mtcr a3, epsr
 ldw     a3, (sp, 8)
 mtcr a3, usp
 addi sp, 16
 KSPTOUSP
 rte
END(csky_cmpxchg)

Messung V0.5
C=96 H=93 G=94

¤ Dauer der Verarbeitung: 0.2 Sekunden  ¤

*© Formatika GbR, Deutschland






Wurzel

Suchen

Beweissystem der NASA

Beweissystem Isabelle

NIST Cobol Testsuite

Cephes Mathematical Library

Wiener Entwicklungsmethode

Haftungshinweis

Die Informationen auf dieser Webseite wurden nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit, noch Qualität der bereit gestellten Informationen zugesichert.

Bemerkung:

Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.