1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
|
/* $XFree86: xc/programs/Xserver/hw/xfree86/os-support/shared/stdResource.c,v 1.20 2002/01/25 21:56:20 tsi Exp $ */
/* Standard resource information code */
#include "X.h"
#include "xf86.h"
#include "xf86Priv.h"
#include "xf86Privstr.h"
#include "xf86Pci.h"
#define NEED_OS_RAC_PROTOS
#include "xf86_OSlib.h"
#include "xf86Resources.h"
/* Avoid Imakefile changes */
#include "bus/Pci.h"
#ifdef USESTDRES
#define xf86StdBusAccWindowsFromOS xf86BusAccWindowsFromOS
#define xf86StdAccResFromOS xf86AccResFromOS
#define xf86StdPciBusAccWindowsFromOS xf86PciBusAccWindowsFromOS
#define xf86StdIsaBusAccWindowsFromOS xf86IsaBusAccWindowsFromOS
resRange PciAvoid[] = {_PCI_AVOID_PC_STYLE, _END};
#endif
#ifdef INCLUDE_XF86_NO_DOMAIN
resPtr
xf86StdBusAccWindowsFromOS(void)
{
/* Fallback is to allow addressing of all memory space */
resPtr ret = NULL;
resRange range;
RANGE(range, 0x00000000, 0xffffffff, ResExcMemBlock);
ret = xf86AddResToList(ret, &range, -1);
/* Fallback is to allow addressing of all I/O space */
RANGE(range, 0x00000000, 0x0000ffff, ResExcIoBlock);
ret = xf86AddResToList(ret, &range, -1);
return ret;
}
resPtr
xf86StdPciBusAccWindowsFromOS(void)
{
/* Fallback is to allow addressing of all memory space */
resPtr ret = NULL;
resRange range;
RANGE(range, 0x00000000, 0xffffffff, ResExcMemBlock);
ret = xf86AddResToList(ret, &range, -1);
/* Fallback is to allow addressing of all I/O space */
RANGE(range, 0x00000000, 0x0000ffff, ResExcIoBlock);
ret = xf86AddResToList(ret, &range, -1);
return ret;
}
#ifdef INCLUDE_UNUSED
resPtr
xf86StdIsaBusAccWindowsFromOS(void)
{
/* Fallback is to allow addressing of all memory space */
resPtr ret = NULL;
resRange range;
RANGE(range, 0x00000000, 0xffffffff, ResExcMemBlock);
ret = xf86AddResToList(ret, &range, -1);
/* Fallback is to allow addressing of all I/O space */
RANGE(range, 0x00000000, 0x0000ffff, ResExcIoBlock);
ret = xf86AddResToList(ret, &range, -1);
return ret;
}
#endif /* INCLUDE_UNUSED */
resPtr
xf86StdAccResFromOS(resPtr ret)
{
resRange range;
/*
* Fallback is to claim the following areas:
*
* 0x00000000 - 0x0009ffff low 640k host memory
* 0x000c0000 - 0x000effff location of VGA and other extensions ROMS
* 0x000f0000 - 0x000fffff system BIOS
* 0x00100000 - 0x3fffffff low 1G - 1MB host memory
* 0xfec00000 - 0xfecfffff default I/O APIC config space
* 0xfee00000 - 0xfeefffff default Local APIC config space
* 0xffe00000 - 0xffffffff high BIOS area (should this be included?)
*
* reference: Intel 440BX AGP specs
*
* The two APIC spaces appear to be BX-specific and should be dealt with
* elsewhere.
*/
/* Fallback is to claim 0x0 - 0x9ffff and 0x100000 - 0x7fffffff */
RANGE(range, 0x00000000, 0x0009ffff, ResExcMemBlock);
ret = xf86AddResToList(ret, &range, -1);
RANGE(range, 0x000c0000, 0x000effff, ResExcMemBlock);
ret = xf86AddResToList(ret, &range, -1);
RANGE(range, 0x000f0000, 0x000fffff, ResExcMemBlock);
ret = xf86AddResToList(ret, &range, -1);
RANGE(range, 0x00100000, 0x3fffffff,
ResExcMemBlock | ResBios | ResEstimated);
ret = xf86AddResToList(ret, &range, -1);
#if 0
RANGE(range, 0xfec00000, 0xfecfffff, ResExcMemBlock | ResBios);
ret = xf86AddResToList(ret, &range, -1);
RANGE(range, 0xfee00000, 0xfeefffff, ResExcMemBlock | ResBios);
ret = xf86AddResToList(ret, &range, -1);
#endif
RANGE(range, 0xffe00000, 0xffffffff, ResExcMemBlock | ResBios);
ret = xf86AddResToList(ret, &range, -1);
/*
* Fallback would be to claim well known ports in the 0x0 - 0x3ff range
* along with their sparse I/O aliases, but that's too imprecise. Instead
* claim a bare minimum here.
*/
RANGE(range, 0x00000000, 0x000000ff, ResExcIoBlock); /* For mainboard */
ret = xf86AddResToList(ret, &range, -1);
/*
* At minimum, the top and bottom resources must be claimed, so that
* resources that are (or appear to be) unallocated can be relocated.
*/
/* RANGE(range, 0x00000000, 0x00000000, ResExcMemBlock);
ret = xf86AddResToList(ret, &range, -1);
RANGE(range, 0xffffffff, 0xffffffff, ResExcMemBlock);
ret = xf86AddResToList(ret, &range, -1);
RANGE(range, 0x00000000, 0x00000000, ResExcIoBlock);
ret = xf86AddResToList(ret, &range, -1); */
RANGE(range, 0x0000ffff, 0x0000ffff, ResExcIoBlock);
ret = xf86AddResToList(ret, &range, -1);
/* XXX add others */
return ret;
}
#endif /* INCLUDE_XF86_NO_DOMAIN */
|