blob: e015acf60e2b789c72a6243a0215df29d54c0d05 [file] [log] [blame]
Heinrich Schuchardtadaea9c2020-11-12 00:29:57 +01001// SPDX-License-Identifier: GPL-2.0+
2/*
3 * The 'exception' command can be used for testing exception handling.
4 *
5 * Copyright (c) 2020, Heinrich Schuchardt <xypron.glpk@gmx.de>
6 */
7
Heinrich Schuchardtadaea9c2020-11-12 00:29:57 +01008#include <command.h>
Tom Rini8da84332025-05-14 13:34:36 -06009#include <env.h>
Heinrich Schuchardtadaea9c2020-11-12 00:29:57 +010010
11static int do_sigsegv(struct cmd_tbl *cmdtp, int flag, int argc,
12 char *const argv[])
13{
14 u8 *ptr = NULL;
15
16 *ptr = 0;
17 return CMD_RET_FAILURE;
18}
19
20static int do_undefined(struct cmd_tbl *cmdtp, int flag, int argc,
21 char *const argv[])
22{
WHR63548fb2024-05-01 00:55:10 +080023#ifdef __powerpc__
24 asm volatile (".long 0xffffffff\n");
25#else
Heinrich Schuchardtadaea9c2020-11-12 00:29:57 +010026 asm volatile (".word 0xffff\n");
WHR63548fb2024-05-01 00:55:10 +080027#endif
Heinrich Schuchardtadaea9c2020-11-12 00:29:57 +010028 return CMD_RET_FAILURE;
29}
30
31static struct cmd_tbl cmd_sub[] = {
32 U_BOOT_CMD_MKENT(sigsegv, CONFIG_SYS_MAXARGS, 1, do_sigsegv,
33 "", ""),
34 U_BOOT_CMD_MKENT(undefined, CONFIG_SYS_MAXARGS, 1, do_undefined,
35 "", ""),
36};
37
Tom Rini03f146c2023-10-07 15:13:08 -040038U_BOOT_LONGHELP(exception,
Heinrich Schuchardtadaea9c2020-11-12 00:29:57 +010039 "<ex>\n"
40 " The following exceptions are available:\n"
41 " undefined - undefined instruction\n"
Tom Rini03f146c2023-10-07 15:13:08 -040042 " sigsegv - illegal memory access\n");
Heinrich Schuchardtadaea9c2020-11-12 00:29:57 +010043
44#include <exception.h>