Lines Matching refs:symbol
87 static void initialize_symbol(symbol_t *symbol);
97 static void test_readable_symbol(symbol_t *symbol);
98 static void test_writable_symbol(symbol_t *symbol);
101 static void add_conditional(symbol_t *symbol);
104 static int is_location_address(symbol_t *symbol);
449 symbol_t *symbol;
451 symbol = $1;
452 if (symbol->type != CONST) {
457 if (symbol->info.cinfo->value > 4) {
462 $$ = (0x1 << symbol->info.cinfo->value);
548 if (accumulator.symbol != NULL) {
553 accumulator.symbol = cur_symbol;
560 if (mode_ptr.symbol != NULL) {
565 mode_ptr.symbol = cur_symbol;
572 if (allones.symbol != NULL) {
577 allones.symbol = cur_symbol;
584 if (allzeros.symbol != NULL) {
589 allzeros.symbol = cur_symbol;
596 if (none.symbol != NULL) {
601 none.symbol = cur_symbol;
608 if (sindex.symbol != NULL) {
613 sindex.symbol = cur_symbol;
695 symbol_t *symbol;
697 symbol = $1;
698 switch (symbol->type) {
700 symbol = $1->info.ainfo->parent;
704 $$.value = symbol->info.rinfo->address;
710 $$.value = symbol->info.finfo->value;
714 $$.value = symbol->info.cinfo->value;
720 "Undefined symbol %s referenced",
721 symbol->name);
728 symlist_add(&$$.referenced_syms, symbol, SYMLIST_INSERT_HEAD);
736 stop("Re-definition of symbol as a constant",
752 stop("Re-definition of symbol as a downloaded constant",
766 stop("Re-definition of symbol as a macro",
885 $$.symbol = $1;
900 $$.symbol = $1;
911 $$.symbol = $1;
916 if (accumulator.symbol == NULL) {
920 $$.symbol = accumulator.symbol;
928 test_writable_symbol($1.symbol);
954 symlist_add(&$$.referenced_syms, accumulator.symbol,
963 test_readable_symbol($1.symbol);
970 $$.symbol = NULL;
1051 $$.symbol = $1;
1056 $$.symbol = $1;
1061 $$.symbol = $1;
1066 $$.symbol = NULL;
1071 $$.symbol = NULL;
1076 $$.symbol = NULL;
1425 * symbol list, if it already exists,
1454 /* Fail if this symbol is already listed */
1468 initialize_symbol(symbol_t *symbol)
1470 switch (symbol->type) {
1479 symbol->info.rinfo =
1481 if (symbol->info.rinfo == NULL) {
1485 memset(symbol->info.rinfo, 0,
1487 SLIST_INIT(&(symbol->info.rinfo->fields));
1494 symbol->info.rinfo->modes =
1497 symbol->info.rinfo->modes = ~0;
1500 symbol->info.ainfo =
1502 if (symbol->info.ainfo == NULL) {
1506 memset(symbol->info.ainfo, 0,
1513 symbol->info.finfo =
1515 if (symbol->info.finfo == NULL) {
1519 memset(symbol->info.finfo, 0, sizeof(struct field_info));
1520 SLIST_INIT(&(symbol->info.finfo->symrefs));
1524 symbol->info.cinfo =
1526 if (symbol->info.cinfo == NULL) {
1530 memset(symbol->info.cinfo, 0,
1534 symbol->info.linfo =
1536 if (symbol->info.linfo == NULL) {
1540 memset(symbol->info.linfo, 0,
1544 symbol->info.condinfo =
1546 if (symbol->info.condinfo == NULL) {
1550 memset(symbol->info.condinfo, 0,
1554 symbol->info.macroinfo =
1556 if (symbol->info.macroinfo == NULL) {
1560 memset(symbol->info.macroinfo, 0,
1562 STAILQ_INIT(&symbol->info.macroinfo->args);
1565 stop("Call to initialize_symbol with invalid symbol type",
1580 stop("Invalid current symbol for adding macro arg",
1611 stop("Invalid current symbol for adding macro arg",
1625 symbol_t *symbol = *p_symbol;
1627 if (symbol->type == UNINITIALIZED) {
1629 symbol->name);
1632 } else if (symbol->type == ALIAS) {
1633 *p_symbol = symbol->info.ainfo->parent;
1634 } else if ((symbol->type != REGISTER)
1635 && (symbol->type != SCBLOC)
1636 && (symbol->type != SRAMLOC)) {
1638 "Specified symbol %s is not a register",
1639 symbol->name);
1651 if (src->symbol == NULL)
1655 test_writable_symbol(dest->symbol);
1656 test_readable_symbol(src->symbol);
1658 if (!is_location_address(dest->symbol)) {
1668 f1_instr->destination = dest->symbol->info.rinfo->address
1670 f1_instr->source = src->symbol->info.rinfo->address
1676 else if (dest->symbol == mode_ptr.symbol) {
1684 if (src->symbol == allones.symbol)
1686 else if (src->symbol == allzeros.symbol)
1688 else if (src->symbol == mode_ptr.symbol)
1729 if (src->symbol == NULL)
1733 test_writable_symbol(dest->symbol);
1734 test_readable_symbol(src->symbol);
1741 f2_instr->destination = dest->symbol->info.rinfo->address
1743 f2_instr->source = src->symbol->info.rinfo->address
1791 test_readable_symbol(src->symbol);
1796 if (address->symbol == NULL) {
1799 } else if (address->symbol->type == UNINITIALIZED) {
1802 instr->patch_label = address->symbol;
1804 addr = address->symbol->info.linfo->address + address->offset;
1807 f3_instr->source = src->symbol->info.rinfo->address
1819 test_readable_symbol(symbol_t *symbol)
1821 if ((symbol->info.rinfo->modes & (0x1 << src_mode)) == 0) {
1824 symbol->name, src_mode);
1828 if (symbol->info.rinfo->mode == WO) {
1836 test_writable_symbol(symbol_t *symbol)
1838 if ((symbol->info.rinfo->modes & (0x1 << dst_mode)) == 0) {
1841 symbol->name, dst_mode);
1845 if (symbol->info.rinfo->mode == RO) {
1855 symbol_t *symbol = sym->symbol;
1874 mask = (int8_t)~symbol->info.rinfo->valid_bitmask;
1881 symbol->name);
1890 if (symbol->info.rinfo->typecheck_masks != FALSE) {
1894 if ((node->symbol->type == MASK
1895 || node->symbol->type == FIELD
1896 || node->symbol->type == ENUM
1897 || node->symbol->type == ENUM_ENTRY)
1898 && symlist_search(&node->symbol->info.finfo->symrefs,
1899 symbol->name) == NULL) {
1903 node->symbol->name, symbol->name);
1919 add_conditional(symbol_t *symbol)
1930 "conflicts with a symbol", EX_DATAERR);
1940 if (symbol->type == CONDITIONAL)
1943 if (symbol->type != UNINITIALIZED) {
1944 stop("Conditional expression conflicts with a symbol",
1949 symbol->type = CONDITIONAL;
1950 initialize_symbol(symbol);
1951 symbol->info.condinfo->func_num = numfuncs++;
1952 symlist_add(&patch_functions, symbol, SYMLIST_INSERT_HEAD);
1985 && (immed->referenced_syms.slh_first->symbol->type == DOWNLOAD_CONST))