Lines Matching refs:symbol
88 static void initialize_symbol(symbol_t *symbol);
98 static void test_readable_symbol(symbol_t *symbol);
99 static void test_writable_symbol(symbol_t *symbol);
102 static void add_conditional(symbol_t *symbol);
105 static int is_location_address(symbol_t *symbol);
450 symbol_t *symbol;
452 symbol = $1;
453 if (symbol->type != CONST) {
458 if (symbol->info.cinfo->value > 4) {
463 $$ = (0x1 << symbol->info.cinfo->value);
549 if (accumulator.symbol != NULL) {
554 accumulator.symbol = cur_symbol;
561 if (mode_ptr.symbol != NULL) {
566 mode_ptr.symbol = cur_symbol;
573 if (allones.symbol != NULL) {
578 allones.symbol = cur_symbol;
585 if (allzeros.symbol != NULL) {
590 allzeros.symbol = cur_symbol;
597 if (none.symbol != NULL) {
602 none.symbol = cur_symbol;
609 if (sindex.symbol != NULL) {
614 sindex.symbol = cur_symbol;
696 symbol_t *symbol;
698 symbol = $1;
699 switch (symbol->type) {
701 symbol = $1->info.ainfo->parent;
705 $$.value = symbol->info.rinfo->address;
711 $$.value = symbol->info.finfo->value;
715 $$.value = symbol->info.cinfo->value;
721 "Undefined symbol %s referenced",
722 symbol->name);
729 symlist_add(&$$.referenced_syms, symbol, SYMLIST_INSERT_HEAD);
737 stop("Re-definition of symbol as a constant",
753 stop("Re-definition of symbol as a downloaded constant",
767 stop("Re-definition of symbol as a macro",
886 $$.symbol = $1;
901 $$.symbol = $1;
912 $$.symbol = $1;
917 if (accumulator.symbol == NULL) {
921 $$.symbol = accumulator.symbol;
929 test_writable_symbol($1.symbol);
955 symlist_add(&$$.referenced_syms, accumulator.symbol,
964 test_readable_symbol($1.symbol);
971 $$.symbol = NULL;
1052 $$.symbol = $1;
1057 $$.symbol = $1;
1062 $$.symbol = $1;
1067 $$.symbol = NULL;
1072 $$.symbol = NULL;
1077 $$.symbol = NULL;
1426 * symbol list, if it already exists,
1455 /* Fail if this symbol is already listed */
1469 initialize_symbol(symbol_t *symbol)
1471 switch (symbol->type) {
1480 symbol->info.rinfo =
1482 if (symbol->info.rinfo == NULL) {
1486 memset(symbol->info.rinfo, 0,
1488 SLIST_INIT(&(symbol->info.rinfo->fields));
1495 symbol->info.rinfo->modes =
1498 symbol->info.rinfo->modes = ~0;
1501 symbol->info.ainfo =
1503 if (symbol->info.ainfo == NULL) {
1507 memset(symbol->info.ainfo, 0,
1514 symbol->info.finfo =
1516 if (symbol->info.finfo == NULL) {
1520 memset(symbol->info.finfo, 0, sizeof(struct field_info));
1521 SLIST_INIT(&(symbol->info.finfo->symrefs));
1525 symbol->info.cinfo =
1527 if (symbol->info.cinfo == NULL) {
1531 memset(symbol->info.cinfo, 0,
1535 symbol->info.linfo =
1537 if (symbol->info.linfo == NULL) {
1541 memset(symbol->info.linfo, 0,
1545 symbol->info.condinfo =
1547 if (symbol->info.condinfo == NULL) {
1551 memset(symbol->info.condinfo, 0,
1555 symbol->info.macroinfo =
1557 if (symbol->info.macroinfo == NULL) {
1561 memset(symbol->info.macroinfo, 0,
1563 STAILQ_INIT(&symbol->info.macroinfo->args);
1566 stop("Call to initialize_symbol with invalid symbol type",
1581 stop("Invalid current symbol for adding macro arg",
1612 stop("Invalid current symbol for adding macro arg",
1626 symbol_t *symbol = *p_symbol;
1628 if (symbol->type == UNINITIALIZED) {
1630 symbol->name);
1633 } else if (symbol->type == ALIAS) {
1634 *p_symbol = symbol->info.ainfo->parent;
1635 } else if ((symbol->type != REGISTER)
1636 && (symbol->type != SCBLOC)
1637 && (symbol->type != SRAMLOC)) {
1639 "Specified symbol %s is not a register",
1640 symbol->name);
1652 if (src->symbol == NULL)
1656 test_writable_symbol(dest->symbol);
1657 test_readable_symbol(src->symbol);
1659 if (!is_location_address(dest->symbol)) {
1669 f1_instr->destination = dest->symbol->info.rinfo->address
1671 f1_instr->source = src->symbol->info.rinfo->address
1677 else if (dest->symbol == mode_ptr.symbol) {
1685 if (src->symbol == allones.symbol)
1687 else if (src->symbol == allzeros.symbol)
1689 else if (src->symbol == mode_ptr.symbol)
1730 if (src->symbol == NULL)
1734 test_writable_symbol(dest->symbol);
1735 test_readable_symbol(src->symbol);
1742 f2_instr->destination = dest->symbol->info.rinfo->address
1744 f2_instr->source = src->symbol->info.rinfo->address
1792 test_readable_symbol(src->symbol);
1797 if (address->symbol == NULL) {
1800 } else if (address->symbol->type == UNINITIALIZED) {
1803 instr->patch_label = address->symbol;
1805 addr = address->symbol->info.linfo->address + address->offset;
1808 f3_instr->source = src->symbol->info.rinfo->address
1820 test_readable_symbol(symbol_t *symbol)
1822 if ((symbol->info.rinfo->modes & (0x1 << src_mode)) == 0) {
1825 symbol->name, src_mode);
1829 if (symbol->info.rinfo->mode == WO) {
1837 test_writable_symbol(symbol_t *symbol)
1839 if ((symbol->info.rinfo->modes & (0x1 << dst_mode)) == 0) {
1842 symbol->name, dst_mode);
1846 if (symbol->info.rinfo->mode == RO) {
1856 symbol_t *symbol = sym->symbol;
1875 mask = (int8_t)~symbol->info.rinfo->valid_bitmask;
1882 symbol->name);
1891 if (symbol->info.rinfo->typecheck_masks != FALSE) {
1895 if ((node->symbol->type == MASK
1896 || node->symbol->type == FIELD
1897 || node->symbol->type == ENUM
1898 || node->symbol->type == ENUM_ENTRY)
1899 && symlist_search(&node->symbol->info.finfo->symrefs,
1900 symbol->name) == NULL) {
1904 node->symbol->name, symbol->name);
1920 add_conditional(symbol_t *symbol)
1931 "conflicts with a symbol", EX_DATAERR);
1941 if (symbol->type == CONDITIONAL)
1944 if (symbol->type != UNINITIALIZED) {
1945 stop("Conditional expression conflicts with a symbol",
1950 symbol->type = CONDITIONAL;
1951 initialize_symbol(symbol);
1952 symbol->info.condinfo->func_num = numfuncs++;
1953 symlist_add(&patch_functions, symbol, SYMLIST_INSERT_HEAD);
1986 && (immed->referenced_syms.slh_first->symbol->type == DOWNLOAD_CONST))