162306a36Sopenharmony_ci/* SPDX-License-Identifier: GPL-2.0 */
262306a36Sopenharmony_ci/*
362306a36Sopenharmony_ci * arch/alpha/lib/dbg_stackkill.S
462306a36Sopenharmony_ci * Contributed by Richard Henderson (rth@cygnus.com)
562306a36Sopenharmony_ci *
662306a36Sopenharmony_ci * Clobber the balance of the kernel stack, hoping to catch
762306a36Sopenharmony_ci * uninitialized local variables in the act.
862306a36Sopenharmony_ci */
962306a36Sopenharmony_ci
1062306a36Sopenharmony_ci#include <asm/asm-offsets.h>
1162306a36Sopenharmony_ci
1262306a36Sopenharmony_ci	.text
1362306a36Sopenharmony_ci	.set noat
1462306a36Sopenharmony_ci
1562306a36Sopenharmony_ci	.align 5
1662306a36Sopenharmony_ci	.globl _mcount
1762306a36Sopenharmony_ci	.ent _mcount
1862306a36Sopenharmony_ci_mcount:
1962306a36Sopenharmony_ci	.frame $30, 0, $28, 0
2062306a36Sopenharmony_ci	.prologue 0
2162306a36Sopenharmony_ci
2262306a36Sopenharmony_ci	ldi	$0, 0xdeadbeef
2362306a36Sopenharmony_ci	lda	$2, -STACK_SIZE
2462306a36Sopenharmony_ci	sll	$0, 32, $1
2562306a36Sopenharmony_ci	and	$30, $2, $2
2662306a36Sopenharmony_ci	or	$0, $1, $0
2762306a36Sopenharmony_ci	lda	$2, TASK_SIZE($2)
2862306a36Sopenharmony_ci	cmpult	$2, $30, $1
2962306a36Sopenharmony_ci	beq	$1, 2f
3062306a36Sopenharmony_ci1:	stq	$0, 0($2)
3162306a36Sopenharmony_ci	addq	$2, 8, $2
3262306a36Sopenharmony_ci	cmpult	$2, $30, $1
3362306a36Sopenharmony_ci	bne	$1, 1b
3462306a36Sopenharmony_ci2:	ret	($28)
3562306a36Sopenharmony_ci
3662306a36Sopenharmony_ci	.end _mcount
37