19.6.42. ExtendedIO(扩展 IO 资源描述符宏)
语法 :
ExtendedIO ( ResourceUsage, IsMinFixed , IsMaxFixed , Decode ,
ISARanges , AddressGranularity, AddressMinimum, AddressMaximum ,
AddressTranslation , RangeLength , TypeSpecificAttributes,
DescriptorName, TranslationType, TranslationDensity)
参数
ResourceUsage 指定该 Memory 范围是由此设备消耗(资源消费者),还是传递给子设备(资源生产者)。如果未指定,则假定为资源消费者。
IsMinFixed 指定此 I/O 范围的最小地址是固定的(最小值固定)还是可更改的(最小值不固定)。如果未指定,则假定为最小值不固定。会自动创建 1 位字段 DescriptorName._MIF 以引用资源描述符的这一部分,其中 ‘1’ 表示最小值固定,‘0’ 表示最小值不固定。
IsMaxFixed 指定此 I/O 范围的最大地址是固定的(最大值固定)还是可更改的(最大值不固定)。如果未指定,则假定为最大值不固定。会自动创建 1 位字段 DescriptorName._MAF 以引用资源描述符的这一部分,其中 ‘1’ 表示最大值固定,‘0’ 表示最大值不固定。
Decode 指定设备是否使用正向解码(正向解码)或减法解码(减法解码)对该 I/O 范围进行解码。如果未指定,则假定为正向解码。会自动创建 1 位字段 DescriptorName._DEC 以引用资源描述符的这一部分,其中 ‘1’ 表示减法解码,‘0’ 表示正向解码。
ISARanges 指定所指定的 I/O 范围是限制为有效的 ISA I/O 范围(仅 ISA)、有效的非 ISA I/O 范围(仅非 ISA),还是不受限制地覆盖整个范围(整个范围)。会自动创建 2 位字段 DescriptorName._RNG 以引用资源描述符的这一部分,其中 ‘1’ 表示仅非 ISA,‘2’ 表示仅 ISA,‘0’ 表示整个范围。
AddressGranularity 求值为一个 64 位整数,用于指定该 I/O 范围必须对齐到的 2 的幂边界(- 1)。会自动创建 64 位字段 DescriptorName._GRA 以引用资源描述符的这一部分。
AddressMinimum 求值为一个 64 位整数,用于指定该 I/O 范围可能的最低基地址。在 AddressGranularity 中对应位为 ‘1’ 的所有位上,该值都必须为 ‘0’。对于进行地址转换的桥设备,这是辅助总线上的地址。会自动创建 64 位字段 DescriptorName._MIN 以引用资源描述符的这一部分。
AddressMaximum 求值为一个 64 位整数,用于指定该 I/O 范围可能的最高基地址。在 AddressGranularity 中对应位为 ‘1’ 的所有位上,该值都必须为 ‘0’。对于进行地址转换的桥设备,这是辅助总线上的地址。会自动创建 64 位字段 DescriptorName._MAX 以引用资源描述符的这一部分。
AddressTranslation 求值为一个 64 位整数,用于指定加到辅助总线 I/O 地址上的偏移量,从而得到对应的主总线 I/O 地址。对于所有非桥设备或不执行转换的桥,此值必须为 ‘0’。会自动创建 64 位字段 DescriptorName._TRA 以引用资源描述符的这一部分。
RangeLength 求值为一个 64 位整数,用于指定该 I/O 范围内被解码的总字节数。会自动创建 64 位字段 DescriptorName._LEN 以引用资源描述符的这一部分。
类型特定属性 是一个可选参数,用于指定特定于该资源类型的属性。
DescriptorName 是一个可选参数,用于指定一个整数常量的名称,该常量将在当前作用域中创建,并包含该资源描述符在当前资源模板缓冲区中的偏移量。预定义的描述符字段名可以追加到该名称之后,以便通过缓冲区字段运算符访问描述符中的各个字段说明
ExtendedIO 宏求值为一个缓冲区,该缓冲区包含一个 64 位 I/O 资源描述符,用于描述一段 I/O 地址范围。该资源描述符的格式可参见 第 6.4.3.5.4 节。此宏设计用于 ResourceTemplate(资源到缓冲区转换宏)内部。
TranslationType 是一个可选参数,用于指定总线辅助侧的资源类型是否与主侧不同(类型转换)或相同(类型静态)。如果指定类型转换,则总线主侧为 Memory。如果指定类型静态,则总线主侧为 I/O。如果未指定,则假定为类型静态。会自动创建 1 位字段 DescriptorName._TTP 以引用资源描述符的这一部分,其中 ‘1’ 表示类型转换,‘0’ 表示类型静态。更多信息请参见 第 5.6.8 节。
TranslationDensity 是一个可选参数,用于指定从主总线到辅助总线的转换是稀疏的(稀疏转换)还是稠密的(稠密转换)。仅当 TranslationType 为 TypeTranslation 时才使用该参数。如果未指定,则假定为稠密转换。会自动创建 1 位字段 DescriptorName._TRS 以引用资源描述符的这一部分,其中 ‘1’ 表示稀疏转换,‘0’ 表示稠密转换。更多信息请参见 第 5.6.8 节。