Puts the ranges assigned to a function into its BARs and ROM BAR.
311{
319
323
324
329
330 BarArray = PciData->u.type0.BaseAddresses;
332 {
335
337 {
338
343 !IsVga)
344 {
345 DPRINT1(
"PCIX - pdox %p BAR %lu has no range but its decode stays on\n",
349 }
350
352 continue;
353 }
354
355
357 HasUpperHalf =
FALSE;
359 {
361 }
363 {
364 BarMask = 0xFFFF0;
365 }
366 else
367 {
371 }
372
373 if (!HasUpperHalf && CmDescriptor->
u.
Generic.Start.HighPart)
374 {
375 DPRINT1(
"PCIX - pdox %p BAR %lu cannot hold address %I64x\n",
378 CmDescriptor->
u.
Generic.Start.QuadPart);
380 }
381
382 BarArray[
i] = (
Bar & ~BarMask) | (CmDescriptor->
u.
Generic.Start.LowPart & BarMask);
383 if (HasUpperHalf)
384 {
386 BarArray[
i] = CmDescriptor->
u.
Generic.Start.HighPart;
387 }
388 }
389
390
393 {
394 PciData->u.type0.ROMBaseAddress = 0;
395 }
396 else
397 {
398 Bar = PciData->u.type0.ROMBaseAddress & ~PCI_ADDRESS_ROM_ADDRESS_MASK;
399 PciData->u.type0.ROMBaseAddress =
Bar |
400 (CmDescriptor->
u.
Generic.Start.LowPart &
403 }
404
406}
BOOLEAN NTAPI PciIsRequirementDescriptor(_In_ PIO_RESOURCE_DESCRIPTOR Limit)
Tells whether a discovered limit asks the arbiter for a range.
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint i
#define CmResourceTypeNull
#define CmResourceTypePort
union _CM_PARTIAL_RESOURCE_DESCRIPTOR::@494 u
struct _CM_PARTIAL_RESOURCE_DESCRIPTOR::@494::@495 Generic
#define STATUS_INVALID_PARAMETER
#define PCI_ADDRESS_IO_ADDRESS_MASK
#define PCI_TYPE0_ADDRESSES
#define PCI_ENABLE_IO_SPACE
#define PCI_ENABLE_MEMORY_SPACE
#define PCI_ADDRESS_ROM_ADDRESS_MASK
#define PCI_ADDRESS_MEMORY_ADDRESS_MASK
#define PCI_ROMADDRESS_ENABLED
#define PCI_SUBCLASS_VID_VGA_CTLR
#define PCI_ADDRESS_MEMORY_TYPE_MASK
#define PCI_SUBCLASS_PRE_20_VGA
#define PCI_CLASS_DISPLAY_CTLR
_In_ LONG _In_ LONG Limit