The Pedigree Project 0.1
svga_reg.h
1/*
2 * Copyright (c) 2008-2014, Pedigree Developers
3 *
4 * Please see the CONTRIB file in the root of the source tree for a full
5 * list of contributors.
6 *
7 * Permission to use, copy, modify, and distribute this software for any
8 * purpose with or without fee is hereby granted, provided that the above
9 * copyright notice and this permission notice appear in all copies.
10 *
11 * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
12 * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
13 * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
14 * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
15 * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
16 * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
17 * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
18 */
19
20/*
21 * Copyright 1998-2001, VMware, Inc.
22 * Distributed under the terms of the MIT License.
23 *
24 */
25
26/*
27 * svga_reg.h --
28 *
29 * SVGA hardware definitions
30 */
31
32#ifndef _SVGA_REG_H_
33#define _SVGA_REG_H_
34#include <config.h>
35
36/*
37 * Memory and port addresses and fundamental constants
38 */
39
40/*
41 * Note-- MAX_WIDTH and MAX_HEIGHT are largely ignored by the code. This
42 * isn't such a bad thing for forward compatibility. --Jeremy.
43 */
44#define SVGA_MAX_WIDTH 2360
45#define SVGA_MAX_HEIGHT 1770
46#define SVGA_MAX_BITS_PER_PIXEL 32
47#define SVGA_MAX_DEPTH 24
48
49#define SVGA_FB_MAX_SIZE \
50 ((((SVGA_MAX_WIDTH * SVGA_MAX_HEIGHT * SVGA_MAX_BITS_PER_PIXEL / 8) >> PAGE_SHIFT) + 1) \
51 << PAGE_SHIFT)
52
53#define SVGA_MAX_PSEUDOCOLOR_DEPTH 8
54#define SVGA_MAX_PSEUDOCOLORS (1 << SVGA_MAX_PSEUDOCOLOR_DEPTH)
55#define SVGA_NUM_PALETTE_REGS (3 * SVGA_MAX_PSEUDOCOLORS)
56
57#define SVGA_MAGIC 0x900000UL
58#define SVGA_MAKE_ID(ver) (SVGA_MAGIC << 8 | (ver))
59
60/* Version 2 let the address of the frame buffer be unsigned on Win32 */
61#define SVGA_VERSION_2 2
62#define SVGA_ID_2 SVGA_MAKE_ID(SVGA_VERSION_2)
63
64/* Version 1 has new registers starting with SVGA_REG_CAPABILITIES so
65 PALETTE_BASE has moved */
66#define SVGA_VERSION_1 1
67#define SVGA_ID_1 SVGA_MAKE_ID(SVGA_VERSION_1)
68
69/* Version 0 is the initial version */
70#define SVGA_VERSION_0 0
71#define SVGA_ID_0 SVGA_MAKE_ID(SVGA_VERSION_0)
72
73/* Invalid SVGA_ID_ */
74#define SVGA_ID_INVALID 0xFFFFFFFF
75
76/* More backwards compatibility, old location of color map: */
77#define SVGA_OLD_PALETTE_BASE 17
78
79/* Base and Offset gets us headed the right way for PCI Base Addr Registers */
80#define SVGA_LEGACY_BASE_PORT 0x4560
81#define SVGA_INDEX_PORT 0x0
82#define SVGA_VALUE_PORT 0x1
83#define SVGA_BIOS_PORT 0x2
84#define SVGA_NUM_PORTS 0x3
85
86/* This port is deprecated, but retained because of old drivers. */
87#define SVGA_LEGACY_ACCEL_PORT 0x3
88
89/* Legal values for the SVGA_REG_CURSOR_ON register in cursor bypass mode */
90#define SVGA_CURSOR_ON_HIDE 0x0 /* Must be 0 to maintain backward compatibility */
91#define SVGA_CURSOR_ON_SHOW 0x1 /* Must be 1 to maintain backward compatibility */
92#define SVGA_CURSOR_ON_REMOVE_FROM_FB \
93 0x2 /* Remove the cursor from the framebuffer because we need to see \
94 what's under it */
95#define SVGA_CURSOR_ON_RESTORE_TO_FB \
96 0x3 /* Put the cursor back in the framebuffer so the user can see it */
97
98/*
99 * Registers
100 */
101
102enum {
103 SVGA_REG_ID = 0,
104 SVGA_REG_ENABLE = 1,
105 SVGA_REG_WIDTH = 2,
106 SVGA_REG_HEIGHT = 3,
107 SVGA_REG_MAX_WIDTH = 4,
108 SVGA_REG_MAX_HEIGHT = 5,
109 SVGA_REG_DEPTH = 6,
110 SVGA_REG_BITS_PER_PIXEL = 7, /* Current bpp in the guest */
111 SVGA_REG_PSEUDOCOLOR = 8,
112 SVGA_REG_RED_MASK = 9,
113 SVGA_REG_GREEN_MASK = 10,
114 SVGA_REG_BLUE_MASK = 11,
115 SVGA_REG_BYTES_PER_LINE = 12,
116 SVGA_REG_FB_START = 13,
117 SVGA_REG_FB_OFFSET = 14,
118 SVGA_REG_VRAM_SIZE = 15,
119 SVGA_REG_FB_SIZE = 16,
120
121 /* ID 0 implementation only had the above registers, then the palette */
122
123 SVGA_REG_CAPABILITIES = 17,
124 SVGA_REG_MEM_START = 18, /* Memory for command FIFO and bitmaps */
125 SVGA_REG_MEM_SIZE = 19,
126 SVGA_REG_CONFIG_DONE = 20, /* Set when memory area configured */
127 SVGA_REG_SYNC = 21, /* Write to force synchronization */
128 SVGA_REG_BUSY = 22, /* Read to check if sync is done */
129 SVGA_REG_GUEST_ID = 23, /* Set guest OS identifier */
130 SVGA_REG_CURSOR_ID = 24, /* ID of cursor */
131 SVGA_REG_CURSOR_X = 25, /* Set cursor X position */
132 SVGA_REG_CURSOR_Y = 26, /* Set cursor Y position */
133 SVGA_REG_CURSOR_ON = 27, /* Turn cursor on/off */
134 SVGA_REG_HOST_BITS_PER_PIXEL = 28, /* Current bpp in the host */
135 SVGA_REG_SCRATCH_SIZE = 29, /* Number of scratch registers */
136 SVGA_REG_MEM_REGS = 30, /* Number of FIFO registers */
137 SVGA_REG_NUM_DISPLAYS = 31, /* Number of guest displays */
138 SVGA_REG_PITCHLOCK = 32, /* Fixed pitch for all modes */
139 SVGA_REG_TOP = 33, /* Must be 1 more than the last register */
140
141 SVGA_PALETTE_BASE = 1024, /* Base of SVGA color map */
142 /* Next 768 (== 256*3) registers exist for colormap */
143 SVGA_SCRATCH_BASE = SVGA_PALETTE_BASE + SVGA_NUM_PALETTE_REGS
144 /* Base of scratch registers */
145 /* Next reg[SVGA_REG_SCRATCH_SIZE] registers exist for scratch usage:
146 First 4 are reserved for VESA BIOS Extension; any remaining are for
147 the use of the current SVGA driver. */
148};
149
150/*
151 * Capabilities
152 */
153
154#define SVGA_CAP_NONE 0x00000
155#define SVGA_CAP_RECT_FILL 0x00001
156#define SVGA_CAP_RECT_COPY 0x00002
157#define SVGA_CAP_RECT_PAT_FILL 0x00004
158#define SVGA_CAP_LEGACY_OFFSCREEN 0x00008
159#define SVGA_CAP_RASTER_OP 0x00010
160#define SVGA_CAP_CURSOR 0x00020
161#define SVGA_CAP_CURSOR_BYPASS 0x00040
162#define SVGA_CAP_CURSOR_BYPASS_2 0x00080
163#define SVGA_CAP_8BIT_EMULATION 0x00100
164#define SVGA_CAP_ALPHA_CURSOR 0x00200
165#define SVGA_CAP_GLYPH 0x00400
166#define SVGA_CAP_GLYPH_CLIPPING 0x00800
167#define SVGA_CAP_OFFSCREEN_1 0x01000
168#define SVGA_CAP_ALPHA_BLEND 0x02000
169#define SVGA_CAP_3D 0x04000
170#define SVGA_CAP_EXTENDED_FIFO 0x08000
171#define SVGA_CAP_MULTIMON 0x10000
172#define SVGA_CAP_PITCHLOCK 0x20000
173
174/*
175 * Raster op codes (same encoding as X) used by FIFO drivers.
176 */
177
178#define SVGA_ROP_CLEAR 0x00 /* 0 */
179#define SVGA_ROP_AND 0x01 /* src AND dst */
180#define SVGA_ROP_AND_REVERSE 0x02 /* src AND NOT dst */
181#define SVGA_ROP_COPY 0x03 /* src */
182#define SVGA_ROP_AND_INVERTED 0x04 /* NOT src AND dst */
183#define SVGA_ROP_NOOP 0x05 /* dst */
184#define SVGA_ROP_XOR 0x06 /* src XOR dst */
185#define SVGA_ROP_OR 0x07 /* src OR dst */
186#define SVGA_ROP_NOR 0x08 /* NOT src AND NOT dst */
187#define SVGA_ROP_EQUIV 0x09 /* NOT src XOR dst */
188#define SVGA_ROP_INVERT 0x0a /* NOT dst */
189#define SVGA_ROP_OR_REVERSE 0x0b /* src OR NOT dst */
190#define SVGA_ROP_COPY_INVERTED 0x0c /* NOT src */
191#define SVGA_ROP_OR_INVERTED 0x0d /* NOT src OR dst */
192#define SVGA_ROP_NAND 0x0e /* NOT src OR NOT dst */
193#define SVGA_ROP_SET 0x0f /* 1 */
194#define SVGA_ROP_UNSUPPORTED 0x10
195
196#define SVGA_NUM_SUPPORTED_ROPS 16
197#define SVGA_ROP_ALL (MASK(SVGA_NUM_SUPPORTED_ROPS))
198#define SVGA_IS_VALID_ROP(rop) (rop < SVGA_NUM_SUPPORTED_ROPS)
199
200/*
201 * Ops
202 * For each pixel, the four channels of the image are computed with:
203 *
204 * C = Ca * Fa + Cb * Fb
205 *
206 * where C, Ca, Cb are the values of the respective channels and Fa
207 * and Fb come from the following table:
208 *
209 * BlendOp Fa Fb
210 * ------------------------------------------
211 * Clear 0 0
212 * Src 1 0
213 * Dst 0 1
214 * Over 1 1-Aa
215 * OverReverse 1-Ab 1
216 * In Ab 0
217 * InReverse 0 Aa
218 * Out 1-Ab 0
219 * OutReverse 0 1-Aa
220 * Atop Ab 1-Aa
221 * AtopReverse 1-Ab Aa
222 * Xor 1-Ab 1-Aa
223 * Add 1 1
224 * Saturate min(1,(1-Ab)/Aa) 1
225 *
226 * Flags
227 * You can use the following flags to achieve additional affects:
228 *
229 * Flag Effect
230 * ------------------------------------------
231 * ConstantSourceAlpha Ca = Ca * Param0
232 * ConstantDestAlpha Cb = Cb * Param1
233 *
234 * Flag effects resolve before the op. For example
235 * BlendOp == Add && Flags == ConstantSourceAlpha |
236 * ConstantDestAlpha results in:
237 *
238 * C = (Ca * Param0) + (Cb * Param1)
239 */
240
241#define SVGA_BLENDOP_CLEAR 0
242#define SVGA_BLENDOP_SRC 1
243#define SVGA_BLENDOP_DST 2
244#define SVGA_BLENDOP_OVER 3
245#define SVGA_BLENDOP_OVER_REVERSE 4
246#define SVGA_BLENDOP_IN 5
247#define SVGA_BLENDOP_IN_REVERSE 6
248#define SVGA_BLENDOP_OUT 7
249#define SVGA_BLENDOP_OUT_REVERSE 8
250#define SVGA_BLENDOP_ATOP 9
251#define SVGA_BLENDOP_ATOP_REVERSE 10
252#define SVGA_BLENDOP_XOR 11
253#define SVGA_BLENDOP_ADD 12
254#define SVGA_BLENDOP_SATURATE 13
255
256#define SVGA_NUM_BLENDOPS 14
257#define SVGA_IS_VALID_BLENDOP(op) (op >= 0 && op < SVGA_NUM_BLENDOPS)
258
259#define SVGA_BLENDFLAG_CONSTANT_SOURCE_ALPHA 0x01
260#define SVGA_BLENDFLAG_CONSTANT_DEST_ALPHA 0x02
261#define SVGA_NUM_BLENDFLAGS 2
262#define SVGA_BLENDFLAG_ALL (MASK(SVGA_NUM_BLENDFLAGS))
263#define SVGA_IS_VALID_BLENDFLAG(flag) ((flag & ~SVGA_BLENDFLAG_ALL) == 0)
264
265/*
266 * FIFO offsets (viewed as an array of 32-bit words)
267 */
268
269enum {
270 /*
271 * The original defined FIFO offsets
272 */
273
274 SVGA_FIFO_MIN = 0,
275 SVGA_FIFO_MAX, /* The distance from MIN to MAX must be at least 10K */
276 SVGA_FIFO_NEXT_CMD,
277 SVGA_FIFO_STOP,
278
279 /*
280 * Additional offsets added as of SVGA_CAP_EXTENDED_FIFO
281 */
282
283 SVGA_FIFO_CAPABILITIES = 4,
284 SVGA_FIFO_FLAGS,
285 SVGA_FIFO_FENCE,
286 SVGA_FIFO_3D_HWVERSION, /* Check SVGA3dHardwareVersion in svga3d_reg.h */
287 SVGA_FIFO_PITCHLOCK,
288
289 /*
290 * Always keep this last. It's not an offset with semantic value, but
291 * rather a convenient way to produce the value of fifo[SVGA_FIFO_NUM_REGS]
292 */
293
294 SVGA_FIFO_NUM_REGS
295};
296
297/*
298 * FIFO Capabilities
299 *
300 * Fence -- Fence register and command are supported
301 * Accel Front -- Front buffer only commands are supported
302 * Pitch Lock -- Pitch lock register is supported
303 */
304
305#define SVGA_FIFO_CAP_NONE 0
306#define SVGA_FIFO_CAP_FENCE (1 << 0)
307#define SVGA_FIFO_CAP_ACCELFRONT (1 << 1)
308#define SVGA_FIFO_CAP_PITCHLOCK (1 << 2)
309
310/*
311 * FIFO Flags
312 *
313 * Accel Front -- Driver should use front buffer only commands
314 */
315
316#define SVGA_FIFO_FLAG_NONE 0
317#define SVGA_FIFO_FLAG_ACCELFRONT (1 << 0)
318
319/*
320 * Drawing object ID's, in the range 0 to SVGA_MAX_ID
321 */
322
323#define SVGA_MAX_ID 499
324
325/*
326 * Macros to compute variable length items (sizes in 32-bit words, except
327 * for SVGA_GLYPH_SCANLINE_SIZE, which is in bytes).
328 */
329
330#define SVGA_BITMAP_SIZE(w, h) ((((w) + 31) >> 5) * (h))
331#define SVGA_BITMAP_SCANLINE_SIZE(w) (((w) + 31) >> 5)
332#define SVGA_PIXMAP_SIZE(w, h, bpp) (((((w) * (bpp)) + 31) >> 5) * (h))
333#define SVGA_PIXMAP_SCANLINE_SIZE(w, bpp) ((((w) * (bpp)) + 31) >> 5)
334#define SVGA_GLYPH_SIZE(w, h) ((((((w) + 7) >> 3) * (h)) + 3) >> 2)
335#define SVGA_GLYPH_SCANLINE_SIZE(w) (((w) + 7) >> 3)
336
337/*
338 * Increment from one scanline to the next of a bitmap or pixmap
339 */
340#define SVGA_BITMAP_INCREMENT(w) ((((w) + 31) >> 5) * sizeof(uint32))
341#define SVGA_PIXMAP_INCREMENT(w, bpp) (((((w) * (bpp)) + 31) >> 5) * sizeof(uint32))
342
343/*
344 * Transparent color for DRAW_GLYPH_CLIPPED
345 */
346#define SVGA_COLOR_TRANSPARENT (~0)
347
348/*
349 * Commands in the command FIFO
350 */
351
352#define SVGA_CMD_INVALID_CMD 0
353/* FIFO layout:
354 <nothing> (well, undefined) */
355
356#define SVGA_CMD_UPDATE 1
357/* FIFO layout:
358 X, Y, Width, Height */
359
360#define SVGA_CMD_RECT_FILL 2
361/* FIFO layout:
362 Color, X, Y, Width, Height */
363
364#define SVGA_CMD_RECT_COPY 3
365/* FIFO layout:
366 Source X, Source Y, Dest X, Dest Y, Width, Height */
367
368#define SVGA_CMD_DEFINE_BITMAP 4
369/* FIFO layout:
370 Pixmap ID, Width, Height, <scanlines> */
371
372#define SVGA_CMD_DEFINE_BITMAP_SCANLINE 5
373/* FIFO layout:
374 Pixmap ID, Width, Height, Line #, scanline */
375
376#define SVGA_CMD_DEFINE_PIXMAP 6
377/* FIFO layout:
378 Pixmap ID, Width, Height, Depth, <scanlines> */
379
380#define SVGA_CMD_DEFINE_PIXMAP_SCANLINE 7
381/* FIFO layout:
382 Pixmap ID, Width, Height, Depth, Line #, scanline */
383
384#define SVGA_CMD_RECT_BITMAP_FILL 8
385/* FIFO layout:
386 Bitmap ID, X, Y, Width, Height, Foreground, Background */
387
388#define SVGA_CMD_RECT_PIXMAP_FILL 9
389/* FIFO layout:
390 Pixmap ID, X, Y, Width, Height */
391
392#define SVGA_CMD_RECT_BITMAP_COPY 10
393/* FIFO layout:
394 Bitmap ID, Source X, Source Y, Dest X, Dest Y,
395 Width, Height, Foreground, Background */
396
397#define SVGA_CMD_RECT_PIXMAP_COPY 11
398/* FIFO layout:
399 Pixmap ID, Source X, Source Y, Dest X, Dest Y, Width, Height */
400
401#define SVGA_CMD_FREE_OBJECT 12
402/* FIFO layout:
403 Object (pixmap, bitmap, ...) ID */
404
405#define SVGA_CMD_RECT_ROP_FILL 13
406/* FIFO layout:
407 Color, X, Y, Width, Height, ROP */
408
409#define SVGA_CMD_RECT_ROP_COPY 14
410/* FIFO layout:
411 Source X, Source Y, Dest X, Dest Y, Width, Height, ROP */
412
413#define SVGA_CMD_RECT_ROP_BITMAP_FILL 15
414/* FIFO layout:
415 ID, X, Y, Width, Height, Foreground, Background, ROP */
416
417#define SVGA_CMD_RECT_ROP_PIXMAP_FILL 16
418/* FIFO layout:
419 ID, X, Y, Width, Height, ROP */
420
421#define SVGA_CMD_RECT_ROP_BITMAP_COPY 17
422/* FIFO layout:
423 ID, Source X, Source Y,
424 Dest X, Dest Y, Width, Height, Foreground, Background, ROP */
425
426#define SVGA_CMD_RECT_ROP_PIXMAP_COPY 18
427/* FIFO layout:
428 ID, Source X, Source Y, Dest X, Dest Y, Width, Height, ROP */
429
430#define SVGA_CMD_DEFINE_CURSOR 19
431/* FIFO layout:
432ID, Hotspot X, Hotspot Y, Width, Height,
433Depth for AND mask, Depth for XOR mask,
434<scanlines for AND mask>, <scanlines for XOR mask> */
435
436#define SVGA_CMD_DISPLAY_CURSOR 20
437/* FIFO layout:
438ID, On/Off (1 or 0) */
439
440#define SVGA_CMD_MOVE_CURSOR 21
441/* FIFO layout:
442X, Y */
443
444#define SVGA_CMD_DEFINE_ALPHA_CURSOR 22
445/* FIFO layout:
446ID, Hotspot X, Hotspot Y, Width, Height,
447<scanlines> */
448
449#define SVGA_CMD_DRAW_GLYPH 23
450/* FIFO layout:
451X, Y, W, H, FGCOLOR, <stencil buffer> */
452
453#define SVGA_CMD_DRAW_GLYPH_CLIPPED 24
454/* FIFO layout:
455X, Y, W, H, FGCOLOR, BGCOLOR, <cliprect>, <stencil buffer>
456Transparent color expands are done by setting BGCOLOR to ~0 */
457
458#define SVGA_CMD_UPDATE_VERBOSE 25
459/* FIFO layout:
460X, Y, Width, Height, Reason */
461
462#define SVGA_CMD_SURFACE_FILL 26
463/* FIFO layout:
464color, dstSurfaceOffset, x, y, w, h, rop */
465
466#define SVGA_CMD_SURFACE_COPY 27
467/* FIFO layout:
468srcSurfaceOffset, dstSurfaceOffset, srcX, srcY,
469destX, destY, w, h, rop */
470
471#define SVGA_CMD_SURFACE_ALPHA_BLEND 28
472/* FIFO layout:
473srcSurfaceOffset, dstSurfaceOffset, srcX, srcY,
474destX, destY, w, h, op (SVGA_BLENDOP*), flags (SVGA_BLENDFLAGS*),
475param1, param2 */
476
477#define SVGA_CMD_FRONT_ROP_FILL 29
478/* FIFO layout:
479 Color, X, Y, Width, Height, ROP */
480
481#define SVGA_CMD_FENCE 30
482/* FIFO layout:
483 Fence value */
484
485#define SVGA_CMD_MAX 31
486
487#define SVGA_CMD_MAX_ARGS 64
488
489/*
490 * Location and size of SVGA frame buffer and the FIFO.
491 */
492#define SVGA_VRAM_MAX_SIZE (16 * 1024 * 1024)
493
494#define SVGA_VRAM_SIZE_WS (16 * 1024 * 1024) // 16 MB
495#define SVGA_MEM_SIZE_WS (2 * 1024 * 1024) // 2 MB
496#define SVGA_VRAM_SIZE_SERVER (4 * 1024 * 1024) // 4 MB
497#define SVGA_MEM_SIZE_SERVER (256 * 1024) // 256 KB
498
499#if /* defined(VMX86_WGS) || */ defined(VMX86_SERVER)
500#define SVGA_VRAM_SIZE SVGA_VRAM_SIZE_SERVER
501#define SVGA_MEM_SIZE SVGA_MEM_SIZE_SERVER
502#else
503#define SVGA_VRAM_SIZE SVGA_VRAM_SIZE_WS
504#define SVGA_MEM_SIZE SVGA_MEM_SIZE_WS
505#endif
506
507/*
508 * SVGA_FB_START is the default starting address of the SVGA frame
509 * buffer in the guest's physical address space.
510 * SVGA_FB_START_BIGMEM is the starting address of the SVGA frame
511 * buffer for VMs that have a large amount of physical memory.
512 *
513 * The address of SVGA_FB_START is set to 2GB - (SVGA_FB_MAX_SIZE +
514 * SVGA_MEM_SIZE), thus the SVGA frame buffer sits at [SVGA_FB_START .. 2GB-1]
515 * in the physical address space. Our older SVGA drivers for NT treat the
516 * address of the frame buffer as a signed integer. For backwards
517 * compatibility, we keep the default location of the frame buffer
518 * at under 2GB in the address space. This restricts VMs to have "only"
519 * up to ~2031MB (i.e., up to SVGA_FB_START) of physical memory.
520 *
521 * For VMs that want more memory than the ~2031MB, we place the SVGA
522 * frame buffer at SVGA_FB_START_BIGMEM. This allows VMs to have up
523 * to 3584MB, at least as far as the SVGA frame buffer is concerned
524 * (note that there may be other issues that limit the VM memory
525 * size). PCI devices use high memory addresses, so we have to put
526 * SVGA_FB_START_BIGMEM low enough so that it doesn't overlap with any
527 * of these devices. Placing SVGA_FB_START_BIGMEM at 0xE0000000
528 * should leave plenty of room for the PCI devices.
529 *
530 * NOTE: All of that is only true for the 0710 chipset. As of the 0405
531 * chipset, the framebuffer start is determined solely based on the value
532 * the guest BIOS or OS programs into the PCI base address registers.
533 */
534#define SVGA_FB_LEGACY_START 0x7EFC0000
535#define SVGA_FB_LEGACY_START_BIGMEM 0xE0000000
536
537#endif