FreeCalypso > hg > freecalypso-tools
comparison target-utils/dspdump/mandump.c @ 540:27b5526ba1a8
dspdump target program written, compiles
author | Mychaela Falconia <falcon@freecalypso.org> |
---|---|
date | Mon, 28 Oct 2019 08:19:33 +0000 |
parents | |
children |
comparison
equal
deleted
inserted
replaced
539:4f346c10f056 | 540:27b5526ba1a8 |
---|---|
1 /* manual dump command */ | |
2 | |
3 #include <sys/types.h> | |
4 #include "types.h" | |
5 #include "leadapi.h" | |
6 | |
7 void | |
8 cmd_dump(argbulk) | |
9 char *argbulk; | |
10 { | |
11 char *argv[4]; | |
12 u_long mode, addr, len; | |
13 int rc; | |
14 volatile u16 *api; | |
15 unsigned n; | |
16 | |
17 if (parse_args(argbulk, 3, 3, argv, 0) < 0) | |
18 return; | |
19 if (parse_hexarg(argv[0], 4, &mode) < 0) { | |
20 printf("ERROR: mode must be a valid 16-bit hex value\n"); | |
21 return; | |
22 } | |
23 if (parse_hexarg(argv[1], 8, &addr) < 0) { | |
24 printf("ERROR: addr must be a valid 32-bit hex value\n"); | |
25 return; | |
26 } | |
27 if (parse_hexarg(argv[2], 4, &len) < 0) { | |
28 printf("ERROR: len must be a valid 16-bit hex value\n"); | |
29 return; | |
30 } | |
31 rc = boot_dsp_dump_agent(); | |
32 if (rc < 0) | |
33 return; /* error msg already printed */ | |
34 rc = dsp_read_op((u16)mode, (u32)addr, (u16)len); | |
35 if (rc < 0) { | |
36 printf("ERROR: DSP timeout on read operation\n"); | |
37 return; | |
38 } | |
39 api = (volatile u16 *) APIF_ADDR; | |
40 for (n = 0; n < len; n++) | |
41 printf("%04X\n", *api++); | |
42 } |