Changeset e2b762ec in mainline for kernel/generic/src/console/cmd.c
- Timestamp:
- 2009-03-16T21:58:05Z (16 years ago)
- Branches:
- lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
- Children:
- f36c061
- Parents:
- d9167a1c
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
kernel/generic/src/console/cmd.c
rd9167a1c re2b762ec 54 54 #include <macros.h> 55 55 #include <debug.h> 56 #include <symtab.h>57 56 #include <cpu.h> 58 57 #include <mm/tlb.h> … … 67 66 #include <ipc/irq.h> 68 67 68 #ifdef CONFIG_SYMTAB 69 #include <symtab.h> 70 #endif 71 69 72 #ifdef CONFIG_TEST 70 73 #include <test.h> … … 168 171 }; 169 172 173 #ifdef CONFIG_SYMTAB 170 174 /* Data and methods for 'symaddr' command. */ 171 175 static int cmd_symaddr(cmd_arg_t *argv); … … 183 187 .argv = &symaddr_argv 184 188 }; 189 #endif 185 190 186 191 static char set_buf[MAX_CMDLINE+1]; … … 459 464 &set4_info, 460 465 &slabs_info, 466 #ifdef CONFIG_SYMTAB 461 467 &symaddr_info, 468 #endif 462 469 &sched_info, 463 470 &threads_info, … … 606 613 } 607 614 615 #ifdef CONFIG_SYMTAB 616 608 617 /** Search symbol table */ 609 618 int cmd_symaddr(cmd_arg_t *argv) … … 614 623 } 615 624 625 #endif 626 616 627 /** Call function with zero parameters */ 617 628 int cmd_call0(cmd_arg_t *argv) 618 629 { 630 #ifdef CONFIG_SYMTAB 619 631 uintptr_t symaddr; 620 char *symbol;621 632 unative_t (*fnc)(void); 622 633 fncptr_t fptr; 623 634 624 635 symaddr = get_symbol_addr((char *) argv->buffer); 625 636 if (!symaddr) … … 629 640 printf("Duplicate symbol, be more specific.\n"); 630 641 } else { 631 symbol = get_symtab_entry(symaddr);632 642 fnc = (unative_t (*)(void)) arch_construct_function(&fptr, (void *) symaddr, (void *) cmd_call0); 633 printf("Calling %s() (%p)\n", symbol, symaddr);643 printf("Calling %s() (%p)\n", argv->buffer, symaddr); 634 644 printf("Result: %#" PRIxn "\n", fnc()); 635 645 } 636 646 #endif 637 647 return 1; 638 648 } … … 670 680 int cmd_call1(cmd_arg_t *argv) 671 681 { 682 #ifdef CONFIG_SYMTAB 672 683 uintptr_t symaddr; 673 684 char *symbol; … … 677 688 678 689 symaddr = get_symbol_addr((char *) argv->buffer); 690 679 691 if (!symaddr) 680 692 printf("Symbol %s not found.\n", argv->buffer); … … 688 700 printf("Result: %#" PRIxn "\n", fnc(arg1)); 689 701 } 690 702 #endif 691 703 return 1; 692 704 } … … 695 707 int cmd_call2(cmd_arg_t *argv) 696 708 { 709 #ifdef CONFIG_SYMTAB 697 710 uintptr_t symaddr; 698 711 char *symbol; … … 714 727 arg1, arg2, symaddr, symbol); 715 728 printf("Result: %#" PRIxn "\n", fnc(arg1, arg2)); 716 } 717 729 } 730 #endif 718 731 return 1; 719 732 } … … 722 735 int cmd_call3(cmd_arg_t *argv) 723 736 { 737 #ifdef CONFIG_SYMTAB 724 738 uintptr_t symaddr; 725 739 char *symbol; … … 743 757 printf("Result: %#" PRIxn "\n", fnc(arg1, arg2, arg3)); 744 758 } 745 759 #endif 746 760 return 1; 747 761 } … … 798 812 799 813 if (((char *)argv->buffer)[0] == '*') { 814 #ifdef CONFIG_SYMTAB 800 815 addr = (uint32_t *) get_symbol_addr((char *) argv->buffer + 1); 816 #else 817 addr = 0; 818 #endif 801 819 pointer = true; 802 820 } else if (((char *) argv->buffer)[0] >= '0' && 803 ((char *)argv->buffer)[0] <= '9') 821 ((char *)argv->buffer)[0] <= '9') { 804 822 addr = (uint32_t *)atoi((char *)argv->buffer); 805 else 823 } else { 824 #ifdef CONFIG_SYMTAB 806 825 addr = (uint32_t *)get_symbol_addr((char *) argv->buffer); 826 #else 827 addr = 0; 828 #endif 829 } 807 830 808 831 if (!addr) 809 832 printf("Symbol %s not found.\n", argv->buffer); 810 833 else if (addr == (uint32_t *) -1) { 834 #ifdef CONFIG_SYMTAB 811 835 symtab_print_search((char *) argv->buffer); 836 #endif 812 837 printf("Duplicate symbol, be more specific.\n"); 813 838 } else {
Note:
See TracChangeset
for help on using the changeset viewer.