Changeset ba276f7 in mainline


Ignore:
Timestamp:
2005-12-11T22:39:11Z (19 years ago)
Author:
Ondrej Palkovsky <ondrap@…>
Branches:
lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
Children:
96c939e
Parents:
3550c393
Message:

Added set4 command.

Location:
generic/src
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • generic/src/console/cmd.c

    r3550c393 rba276f7  
    9393};
    9494
     95static char set_buf[MAX_CMDLINE+1];
     96static int cmd_set4(cmd_arg_t *argv);
     97static 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};
     107static 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
    95116/** Data and methods for 'call0' command. */
    96117static char call0_buf[MAX_CMDLINE+1];
     
    256277        if (!cmd_register(&call3_info))
    257278                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);
    258283       
    259284        cmd_initialize(&halt_info);
     
    472497        return 1;
    473498}
     499
     500/** Write 4 byte value to address */
     501int 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}
  • generic/src/console/kconsole.c

    r3550c393 rba276f7  
    359359                rdln_print_c('\b',curlen-position);
    360360        }
    361         histposition++;
    362         histposition = histposition % KCONSOLE_HISTORY;
     361        if (curlen) {
     362                histposition++;
     363                histposition = histposition % KCONSOLE_HISTORY;
     364        }
    363365        current[curlen] = '\0';
    364366        return current;
  • generic/src/lib/func.c

    r3550c393 rba276f7  
    141141
    142142        while (*text) {
    143                 if (base != 16 && *text >= 'A' && *text <= 'F')
     143                if (base != 16 && \
     144                    ((*text >= 'A' && *text <= 'F' )
     145                     || (*text >='a' && *text <='f')))
    144146                        break;
    145147                if (base == 8 && *text >='8')
     
    152154                        result *= base;
    153155                        result += *text - 'A' + 10;
     156                } else if (*text >= 'a' && *text <= 'f') {
     157                        result *= base;
     158                        result += *text - 'a' + 10;
    154159                } else
    155160                        break;
Note: See TracChangeset for help on using the changeset viewer.