/* 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
	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
1:
	ldw	a3, (a2)
	cmpne	a0, a3
	bt16	3f
2:
	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)

#ifndef CONFIG_CPU_HAS_LDSTEX
/*
 * Called from tlbmodified exception
 */
ENTRY(csky_cmpxchg_fixup)
	mfcr	a0, epc
	lrw	a1, 2b
	cmpne	a1, a0
	bt	1f
	subi	a1, (2b - 1b)
	stw	a1, (sp, LSAVE_PC)
1:
	rts
END(csky_cmpxchg_fixup)
#endif
