Changeset ba276f7 in mainline for generic/src/console/cmd.c
- Timestamp:
- 2005-12-11T22:39:11Z (19 years ago)
- Branches:
- lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
- Children:
- 96c939e
- Parents:
- 3550c393
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
generic/src/console/cmd.c
r3550c393 rba276f7 93 93 }; 94 94 95 static char set_buf[MAX_CMDLINE+1]; 96 static int cmd_set4(cmd_arg_t *argv); 97 static cmd_arg_t set4_argv[] = { 98 { 99 .type = ARG_TYPE_STRING, 100 .buffer = set_buf, 101 .len = sizeof(set_buf) 102 }, 103 { 104 .type = ARG_TYPE_INT 105 } 106 }; 107 static cmd_info_t set4_info = { 108 .name = "set4", 109 .description = "set <dest_addr> <value> - 4byte version", 110 .func = cmd_set4, 111 .argc = 2, 112 .argv = set4_argv 113 }; 114 115 95 116 /** Data and methods for 'call0' command. */ 96 117 static char call0_buf[MAX_CMDLINE+1]; … … 256 277 if (!cmd_register(&call3_info)) 257 278 panic("could not register command %s\n", call3_info.name); 279 280 cmd_initialize(&set4_info); 281 if (!cmd_register(&set4_info)) 282 panic("could not register command %s\n", set4_info.name); 258 283 259 284 cmd_initialize(&halt_info); … … 472 497 return 1; 473 498 } 499 500 /** Write 4 byte value to address */ 501 int cmd_set4(cmd_arg_t *argv) 502 { 503 char *symbol; 504 __u32 *addr ; 505 __u32 arg1 = argv[1].intval; 506 bool pointer = false; 507 508 if (((char *)argv->buffer)[0] == '*') { 509 addr = (__u32 *) get_symbol_addr(argv->buffer+1); 510 pointer = true; 511 } else if (((char *)argv->buffer)[0] >= '0' && 512 ((char *)argv->buffer)[0] <= '9') 513 addr = (__u32 *)atoi((char *)argv->buffer); 514 else 515 addr = (__u32 *)get_symbol_addr(argv->buffer); 516 517 if (!addr) 518 printf("Symbol %s not found.\n", argv->buffer); 519 else if (addr == (__u32 *) -1) { 520 symtab_print_search(argv->buffer); 521 printf("Duplicate symbol, be more specific.\n"); 522 } else { 523 if (pointer) 524 addr = (__u32 *)*addr; 525 printf("Writing 0x%x -> 0x%p\n", arg1, addr); 526 *addr = arg1; 527 528 } 529 530 return 1; 531 }
Note:
See TracChangeset
for help on using the changeset viewer.