xref: /src/tests/sys/vm/stack/stack_dt_need_exec_test.c (revision 8920c5f2a1175c22631780bd236026d15e2d3d72)
18920c5f2SDmitry Chagin /*-
28920c5f2SDmitry Chagin  * Copyright (c) 2023 Dmitry Chagin <dchagin@FreeBSD.org>
38920c5f2SDmitry Chagin  *
48920c5f2SDmitry Chagin  * SPDX-License-Identifier: BSD-2-Clause
58920c5f2SDmitry Chagin  */
68920c5f2SDmitry Chagin 
78920c5f2SDmitry Chagin #include <sys/systm.h>
88920c5f2SDmitry Chagin #include <vm/vm_param.h>
98920c5f2SDmitry Chagin 
108920c5f2SDmitry Chagin #include <atf-c.h>
118920c5f2SDmitry Chagin 
128920c5f2SDmitry Chagin extern int checkstack(void);
138920c5f2SDmitry Chagin 
148920c5f2SDmitry Chagin static int jumpstack0(void) __noinline;
158920c5f2SDmitry Chagin static int jumpstack1(void) __noinline;
168920c5f2SDmitry Chagin 
178920c5f2SDmitry Chagin 
188920c5f2SDmitry Chagin static int
jumpstack0(void)198920c5f2SDmitry Chagin jumpstack0(void)
208920c5f2SDmitry Chagin {
218920c5f2SDmitry Chagin 	char stack[SGROWSIZ];
228920c5f2SDmitry Chagin 
238920c5f2SDmitry Chagin 	explicit_bzero(stack, sizeof(stack));
248920c5f2SDmitry Chagin 	return (checkstack());
258920c5f2SDmitry Chagin }
268920c5f2SDmitry Chagin 
278920c5f2SDmitry Chagin static int
jumpstack1(void)288920c5f2SDmitry Chagin jumpstack1(void)
298920c5f2SDmitry Chagin {
308920c5f2SDmitry Chagin 	char stack[SGROWSIZ * 2];
318920c5f2SDmitry Chagin 
328920c5f2SDmitry Chagin 	explicit_bzero(stack, sizeof(stack));
338920c5f2SDmitry Chagin 	return (checkstack());
348920c5f2SDmitry Chagin }
358920c5f2SDmitry Chagin 
368920c5f2SDmitry Chagin ATF_TC_WITHOUT_HEAD(dt_need_test);
ATF_TC_BODY(dt_need_test,tc)378920c5f2SDmitry Chagin ATF_TC_BODY(dt_need_test, tc)
388920c5f2SDmitry Chagin {
398920c5f2SDmitry Chagin 
408920c5f2SDmitry Chagin 	ATF_REQUIRE(jumpstack0() == 0);
418920c5f2SDmitry Chagin 	ATF_REQUIRE(jumpstack1() == 0);
428920c5f2SDmitry Chagin }
438920c5f2SDmitry Chagin 
ATF_TP_ADD_TCS(tp)448920c5f2SDmitry Chagin ATF_TP_ADD_TCS(tp)
458920c5f2SDmitry Chagin {
468920c5f2SDmitry Chagin 
478920c5f2SDmitry Chagin 	ATF_TP_ADD_TC(tp, dt_need_test);
488920c5f2SDmitry Chagin 
498920c5f2SDmitry Chagin 	return (atf_no_error());
508920c5f2SDmitry Chagin }
51