drivers/scsi/aic7xxx/aicasm/aicasm_gram.y
Source file repositories/reference/linux-study-clean/drivers/scsi/aic7xxx/aicasm/aicasm_gram.y
File Facts
- System
- Linux kernel
- Corpus path
drivers/scsi/aic7xxx/aicasm/aicasm_gram.y- Extension
.y- Size
- 41886 bytes
- Lines
- 2001
- Domain
- Driver Families
- Bucket
- drivers/scsi
- Inferred role
- Driver Families: drivers/scsi
- Status
- atlas-only
Why This File Exists
Repeatable hardware-adapter layer. Deep compatibility for every driver is out of scope; this atlas records patterns, probe lifecycles, bus glue, IRQ/DMA usage, and links back to core abstractions.
- Repeatable hardware-adapter layer. Deep compatibility for every driver is out of scope; this atlas records patterns, probe lifecycles, bus glue, IRQ/DMA usage, and links back to core abstractions.
- Defines or uses C structs; map object ownership, embedded links, reference counts, and lock ownership.
Dependency Surface
sys/types.hinttypes.hregex.hstdio.hstdlib.hstring.hsysexits.h../queue.haicasm.haicasm_symbol.haicasm_insformat.h
Detected Declarations
function process_fieldfunction initialize_symbolfunction add_macro_argfunction add_macro_bodyfunction process_registerfunction format_1_instrfunction format_2_instrfunction format_3_instrfunction test_readable_symbolfunction test_writable_symbolfunction type_checkfunction make_expressionfunction add_conditionalfunction add_versionfunction yyerrorfunction is_download_constfunction is_location_address
Annotated Snippet
if ($1->type != UNINITIALIZED) {
stop("Register multiply defined", EX_DATAERR);
/* NOTREACHED */
}
cur_symbol = $1;
cur_symbol->type = cur_symtype;
initialize_symbol(cur_symbol);
}
reg_attribute_list
'}'
{
/*
* Default to allowing everything in for registers
* with no bit or mask definitions.
*/
if (cur_symbol->info.rinfo->valid_bitmask == 0)
cur_symbol->info.rinfo->valid_bitmask = 0xFF;
if (cur_symbol->info.rinfo->size == 0)
cur_symbol->info.rinfo->size = 1;
/*
* This might be useful for registers too.
*/
if (cur_symbol->type != REGISTER) {
if (cur_symbol->info.rinfo->address == 0)
cur_symbol->info.rinfo->address =
sram_or_scb_offset;
sram_or_scb_offset +=
cur_symbol->info.rinfo->size;
}
cur_symbol = NULL;
}
;
reg_attribute_list:
reg_attribute
| reg_attribute_list reg_attribute
;
reg_attribute:
reg_address
| size
| count
| access_mode
| dont_generate_debug_code
| modes
| field_defn
| enum_defn
| mask_defn
| alias
| accumulator
| mode_pointer
| allones
| allzeros
| none
| sindex
;
reg_address:
T_ADDRESS T_NUMBER
{
cur_symbol->info.rinfo->address = $2;
}
;
size:
T_SIZE T_NUMBER
{
cur_symbol->info.rinfo->size = $2;
Annotation
- Immediate include surface: `sys/types.h`, `inttypes.h`, `regex.h`, `stdio.h`, `stdlib.h`, `string.h`, `sysexits.h`, `../queue.h`.
- Detected declarations: `function process_field`, `function initialize_symbol`, `function add_macro_arg`, `function add_macro_body`, `function process_register`, `function format_1_instr`, `function format_2_instr`, `function format_3_instr`, `function test_readable_symbol`, `function test_writable_symbol`.
- Atlas domain: Driver Families / drivers/scsi.
- Implementation status: atlas-only.
Implementation Notes
- This generated page is the file-by-file coverage layer; curated subsystem chapters should link here when they synthesize a multi-file control flow.
- Core OS pages should be promoted from atlas-only to deep-reviewed when they explain data structures, invariants, locking, lifecycle, and C implementation snippets.
- Driver-family pages are intentionally pattern-oriented unless they are part of the selected PCIe/NVMe representative device path.