date and time created 90/05/12 15:47:29 by bostic
[unix-history] / usr / src / lib / libc / hp300 / gen / alloca.s
/*-
* Copyright (c) 1990 The Regents of the University of California.
* All rights reserved.
*
* This code is derived from software contributed to Berkeley by
* the Systems Programming Group of the University of Utah Computer
* Science Department.
*
* %sccs.include.redist.c%
*/
#if defined(LIBC_SCCS) && !defined(lint)
.asciz "@(#)alloca.s 5.1 (Berkeley) %G%"
#endif /* LIBC_SCCS and not lint */
/* like alloc, but automatic free in return */
#include "DEFS.h"
ENTRY(alloca)
movl sp@,a0 /* save return addr */
movl sp,d0 /* get current SP value */
subl sp@(4),d0 /* allocate requested space */
andb #~3,d0 /* longword align for efficiency */
addql #8,d0 /* reuse space of call frame */
movl d0,sp /* set new SP value */
lea sp@(-4),sp /* account for argument pop in caller */
jmp a0@ /* funny return */