19.6.43. ExtendedMemory(扩展 Memory 资源描述符宏)
语法 :
ExtendedMemory ( ResourceUsage, Decode, IsMinFixed, IsMaxFixed,
Cacheable, ReadAndWrite, AddressGranularity, AddressMinimum,
AddressMaximum, AddressTranslation, RangeLength, TypeSpecificAttributes,
DescriptorName, MemoryRangeType, TranslationType)
参数
ResourceUsage 指定该 Memory 范围是由此设备消耗(资源消费者),还是传递给子设备(资源生产者)。如果未指定,则假定为资源消费者。
Decode 指定设备是否使用正向解码(正向解码)或减法解码(减法解码)对该 Memory 范围进行解码。如果未指定,则假定为正向解码。会自动创建 1 位字段 DescriptorName._DEC 以引用资源描述符的这一部分,其中 ‘1’ 表示减法解码,‘0’ 表示正向解码。
IsMinFixed 指定此 Memory 范围的最小地址是固定的(最小值固定)还是可更改的(最小值不固定)。如果未指定,则假定为最小值不固定。会自动创建 1 位字段 DescriptorName._MIF 以引用资源描述符的这一部分,其中 ‘1’ 表示最小值固定,‘0’ 表示最小值不固定。
IsMaxFixed 指定此 Memory 范围的最大地址是固定的(最大值固定)还是可更改的(最大值不固定)。如果未指定,则假定为最大值不固定。会自动创建 1 位字段 DescriptorName._MAF 以引用资源描述符的这一部分,其中 ‘1’ 表示最大值固定,‘0’ 表示最大值不固定。
Cacheable 指定内存区域是否可缓存(可缓存)、可缓存且可写合并(写合并)、可缓存且可预取(可预取)或不可缓存(不可缓存)。如果未指定,则假定为不可缓存。会自动创建 2 位字段 DescriptorName._MEM 以引用资源描述符的这一部分,其中 ‘1’ 表示可缓存,‘2’ 表示写合并,‘3’ 表示可预取,‘0’ 表示不可缓存。
ReadAndWrite 指定内存区域是只读(只读)还是可读写(可读写)。如果未指定,则假定为可读写。会自动创建 1 位字段 DescriptorName._RW 以引用资源描述符的这一部分,其中 ‘1’ 表示可读写,‘0’ 表示只读。
AddressGranularity 求值为一个 64 位整数,用于指定该 Memory 范围必须对齐到的 2 的幂边界(- 1)。会自动创建 64 位字段 DescriptorName._GRA 以引用资源描述符的这一部分。
AddressMinimum 求值为一个 64 位整数,用于指定该 Memory 范围可能的最低基地址。在 AddressGranularity 中对应位为 ‘1’ 的所有位上,该值都必须为 ‘0’。对于进行地址转换的桥设备,这是辅助总线上的地址。会自动创建 64 位字段 DescriptorName._MIN 以引用资源描述符的这一部分。
AddressMaximum 求值为一个 64 位整数,用于指定该 Memory 范围可能的最高基地址。在 AddressGranularity 中对应位为 ‘1’ 的所有位上,该值都必须为 ‘0’。对于进行地址转换的桥设备,这是辅助总线上的地址。会自动创建 64 位字段 DescriptorName._MAX 以引用资源描述符的这一部分。
AddressTranslation 求值为一个 64 位整数,用于指定加到辅助总线 I/O 地址上的偏移量,从而得到对应的主总线 I/O 地址。对于所有非桥设备或不执行转换的桥,此值必须为 ‘0’。会自动创建 64 位字段 DescriptorName._TRA 以引用资源描述符的这一部分。
RangeLength 求值为一个 64 位整数,用于指定该 Memory 范围内被解码的总字节数。会自动创建 64 位字段 DescriptorName._LEN 以引用资源描述符的这一部分。
类型特定属性 是一个可选参数,用于指定特定于该资源类型的属性。
DescriptorName 是一个可选参数,用于指定一个整数常量的名称,该常量将在当前作用域中创建,并包含该资源描述符在当前资源模板缓冲区中的偏移量。预定义的描述符字段名可以追加到该名称之后,以便通过缓冲区字段运算符访问描述符中的各个字段。
MemoryRangeType 是一个可选参数,用于指定内存用途。该内存可以标记为普通内存(AddressRangeMemory)、用作 ACPI NVS 空间(AddressRangeNVS)、用作 ACPI 可回收空间(AddressRangeACPI)或系统保留(AddressRangeReserved)。如果未指定,则假定为 AddressRangeMemory。会自动创建 2 位字段 DescriptorName._MTP 以引用资源描述符的这一部分,其中 ‘0’ 表示 AddressRangeMemory,‘1’ 表示 AddressRangeReserved,‘2’ 表示 AddressRangeACPI,‘3’ 表示 AddressRangeNVS。
TranslationType 是一个可选参数,用于指定总线次级侧上的资源类型是否与总线主侧上的资源类型不同(TypeTranslation)或相同(TypeStatic)。如果指定了 TypeTranslation,则总线主侧是 I/O。如果指定了 TypeStatic,则总线主侧是内存。如果未指定任何内容,则假定为 TypeStatic。会自动创建 1 位字段 DescriptorName._TTP 来引用资源描述符的这一部分,其中“1”表示 TypeTranslation,“0”表示 TypeStatic。更多信息请参见第 5.6.8 节。
说明
ExtendedMemory 宏求值为一个缓冲区,其中包含一个 64 位内存资源描述符,用于描述一段内存地址范围。该资源描述符的格式可参见第 6.4.3.5.4 节。此宏设计为在 ResourceTemplate(资源到缓冲区转换宏)内部使用。