xref: /openbmc/linux/arch/alpha/lib/dbg_stackkill.S (revision b2441318)
1b2441318SGreg Kroah-Hartman/* SPDX-License-Identifier: GPL-2.0 */
21da177e4SLinus Torvalds/*
3f30c2269SUwe Zeisberger * arch/alpha/lib/dbg_stackkill.S
41da177e4SLinus Torvalds * Contributed by Richard Henderson (rth@cygnus.com)
51da177e4SLinus Torvalds *
61da177e4SLinus Torvalds * Clobber the balance of the kernel stack, hoping to catch
71da177e4SLinus Torvalds * uninitialized local variables in the act.
81da177e4SLinus Torvalds */
91da177e4SLinus Torvalds
10e2d5df93SSam Ravnborg#include <asm/asm-offsets.h>
111da177e4SLinus Torvalds
121da177e4SLinus Torvalds	.text
131da177e4SLinus Torvalds	.set noat
141da177e4SLinus Torvalds
151da177e4SLinus Torvalds	.align 5
161da177e4SLinus Torvalds	.globl _mcount
171da177e4SLinus Torvalds	.ent _mcount
181da177e4SLinus Torvalds_mcount:
191da177e4SLinus Torvalds	.frame $30, 0, $28, 0
201da177e4SLinus Torvalds	.prologue 0
211da177e4SLinus Torvalds
221da177e4SLinus Torvalds	ldi	$0, 0xdeadbeef
231da177e4SLinus Torvalds	lda	$2, -STACK_SIZE
241da177e4SLinus Torvalds	sll	$0, 32, $1
251da177e4SLinus Torvalds	and	$30, $2, $2
261da177e4SLinus Torvalds	or	$0, $1, $0
271da177e4SLinus Torvalds	lda	$2, TASK_SIZE($2)
281da177e4SLinus Torvalds	cmpult	$2, $30, $1
291da177e4SLinus Torvalds	beq	$1, 2f
301da177e4SLinus Torvalds1:	stq	$0, 0($2)
311da177e4SLinus Torvalds	addq	$2, 8, $2
321da177e4SLinus Torvalds	cmpult	$2, $30, $1
331da177e4SLinus Torvalds	bne	$1, 1b
341da177e4SLinus Torvalds2:	ret	($28)
351da177e4SLinus Torvalds
361da177e4SLinus Torvalds	.end _mcount
37