18c2ecf20Sopenharmony_ci/* SPDX-License-Identifier: GPL-2.0 */
28c2ecf20Sopenharmony_ci/*
38c2ecf20Sopenharmony_ci * arch/alpha/lib/dbg_stackkill.S
48c2ecf20Sopenharmony_ci * Contributed by Richard Henderson (rth@cygnus.com)
58c2ecf20Sopenharmony_ci *
68c2ecf20Sopenharmony_ci * Clobber the balance of the kernel stack, hoping to catch
78c2ecf20Sopenharmony_ci * uninitialized local variables in the act.
88c2ecf20Sopenharmony_ci */
98c2ecf20Sopenharmony_ci
108c2ecf20Sopenharmony_ci#include <asm/asm-offsets.h>
118c2ecf20Sopenharmony_ci
128c2ecf20Sopenharmony_ci	.text
138c2ecf20Sopenharmony_ci	.set noat
148c2ecf20Sopenharmony_ci
158c2ecf20Sopenharmony_ci	.align 5
168c2ecf20Sopenharmony_ci	.globl _mcount
178c2ecf20Sopenharmony_ci	.ent _mcount
188c2ecf20Sopenharmony_ci_mcount:
198c2ecf20Sopenharmony_ci	.frame $30, 0, $28, 0
208c2ecf20Sopenharmony_ci	.prologue 0
218c2ecf20Sopenharmony_ci
228c2ecf20Sopenharmony_ci	ldi	$0, 0xdeadbeef
238c2ecf20Sopenharmony_ci	lda	$2, -STACK_SIZE
248c2ecf20Sopenharmony_ci	sll	$0, 32, $1
258c2ecf20Sopenharmony_ci	and	$30, $2, $2
268c2ecf20Sopenharmony_ci	or	$0, $1, $0
278c2ecf20Sopenharmony_ci	lda	$2, TASK_SIZE($2)
288c2ecf20Sopenharmony_ci	cmpult	$2, $30, $1
298c2ecf20Sopenharmony_ci	beq	$1, 2f
308c2ecf20Sopenharmony_ci1:	stq	$0, 0($2)
318c2ecf20Sopenharmony_ci	addq	$2, 8, $2
328c2ecf20Sopenharmony_ci	cmpult	$2, $30, $1
338c2ecf20Sopenharmony_ci	bne	$1, 1b
348c2ecf20Sopenharmony_ci2:	ret	($28)
358c2ecf20Sopenharmony_ci
368c2ecf20Sopenharmony_ci	.end _mcount
37