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 Chaginjumpstack0(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 Chaginjumpstack1(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 ChaginATF_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 ChaginATF_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