blob: c1d1ee260b163be719df0593a4f9a4c125604308 [file] [log] [blame]
The following table defines the data structure that precedes the FCode
image in a PCI expansion ROM. Refer to the "PCI Local Bus Specification"
for exact descriptions of all the fields.
Note: all values are in hex. Muti-byte values are little-endian.
Offset Length Value Description
------ ------ ----- -----------
00 1 55 ROM Signature, byte 1
01 1 aa ROM Signature, byte 2
02 2 0034 FCode start offset
04 14 00 Reserved
18 2 001a PCI Data Structure offset
1a 4 'PCIR' PCI Data Structure signature
1e 2 -- Vendor ID
20 2 -- Device ID
22 2 -- VPD offset (usually zero)
24 2 0018 PCI Data Structure length
26 1 00 PCI Data Structure revision
27 3 -- Class Code
2a 2 -- Image length in 512-byte blocks
2c 2 -- Revision of code/data
2e 1 01 Code type (1 = FCode)
2f 1 80 Continuation Indicator (Bit 7: 1=last image, 0=more)
30 2 0000 Reserved
32 2 0000 Padding
34 -- -- FCode image
The following code fragment should precede "fcode-versionN" in the
source file, in order to make the header:
hex
tokenizer[
55 emit-byte aa emit-byte \ PCI magic number
34 emit-byte 00 emit-byte \ Start of FCode
14 0 do 0 emit-byte loop
1a emit-byte 00 emit-byte \ Start of PCI Data Structure:
ascii P emit-byte ascii C emit-byte ascii I emit-byte ascii R emit-byte
xx emit-byte xx emit-byte \ 2 vendor
xx emit-byte xx emit-byte \ 2 device
00 emit-byte 00 emit-byte \ 2 VPD
18 emit-byte 00 emit-byte \ 2 DS len
00 emit-byte xx emit-byte \ 1 rev
xx emit-byte xx emit-byte \ 3 class code
xx emit-byte xx emit-byte \ 2 image len
01 emit-byte 00 emit-byte \ 2 rev of code
01 emit-byte \ 1 code type
80 emit-byte \ 1 indicator
00 emit-byte 00 emit-byte \ 2 reserved
00 emit-byte 00 emit-byte \ 2 pad
]tokenizer