Commit 4e3e9d0b4d31cc7966147543634c3476aec52d21
1 parent
358c6407
avoid using anonymous struct extension (not supported by all gcc 3.x)
git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@896 c046a42c-6fe2-441c-8c8c-71466251a162
Showing
2 changed files
with
67 additions
and
53 deletions
hw/cirrus_vga.c
@@ -205,8 +205,7 @@ typedef void (*cirrus_bitblt_rop_t) (uint8_t * dst, const uint8_t * src, | @@ -205,8 +205,7 @@ typedef void (*cirrus_bitblt_rop_t) (uint8_t * dst, const uint8_t * src, | ||
205 | typedef void (*cirrus_bitblt_handler_t) (void *opaque); | 205 | typedef void (*cirrus_bitblt_handler_t) (void *opaque); |
206 | 206 | ||
207 | typedef struct CirrusVGAState { | 207 | typedef struct CirrusVGAState { |
208 | - /* XXX: we use the anonymous struct/union gcc 3.x extension */ | ||
209 | - __extension__ struct VGAState; | 208 | + VGA_STATE_COMMON |
210 | 209 | ||
211 | int cirrus_linear_io_addr; | 210 | int cirrus_linear_io_addr; |
212 | int cirrus_mmio_io_addr; | 211 | int cirrus_mmio_io_addr; |
hw/vga_int.h
@@ -56,61 +56,76 @@ | @@ -56,61 +56,76 @@ | ||
56 | 56 | ||
57 | #define VBE_DISPI_LFB_PHYSICAL_ADDRESS 0xE0000000 | 57 | #define VBE_DISPI_LFB_PHYSICAL_ADDRESS 0xE0000000 |
58 | 58 | ||
59 | -typedef struct VGAState { | ||
60 | - uint8_t *vram_ptr; | ||
61 | - unsigned long vram_offset; | ||
62 | - unsigned int vram_size; | ||
63 | - uint32_t latch; | ||
64 | - uint8_t sr_index; | ||
65 | - uint8_t sr[256]; | ||
66 | - uint8_t gr_index; | ||
67 | - uint8_t gr[256]; | ||
68 | - uint8_t ar_index; | ||
69 | - uint8_t ar[21]; | ||
70 | - int ar_flip_flop; | ||
71 | - uint8_t cr_index; | ||
72 | - uint8_t cr[256]; /* CRT registers */ | ||
73 | - uint8_t msr; /* Misc Output Register */ | ||
74 | - uint8_t fcr; /* Feature Control Register */ | ||
75 | - uint8_t st00; /* status 0 */ | ||
76 | - uint8_t st01; /* status 1 */ | ||
77 | - uint8_t dac_state; | ||
78 | - uint8_t dac_sub_index; | ||
79 | - uint8_t dac_read_index; | ||
80 | - uint8_t dac_write_index; | ||
81 | - uint8_t dac_cache[3]; /* used when writing */ | ||
82 | - uint8_t palette[768]; | ||
83 | - int32_t bank_offset; | ||
84 | - int (*get_bpp)(struct VGAState *s); | ||
85 | - void (*get_offsets)(struct VGAState *s, | ||
86 | - uint32_t *pline_offset, | ||
87 | - uint32_t *pstart_addr); | ||
88 | #ifdef CONFIG_BOCHS_VBE | 59 | #ifdef CONFIG_BOCHS_VBE |
89 | - uint16_t vbe_index; | ||
90 | - uint16_t vbe_regs[VBE_DISPI_INDEX_NB]; | ||
91 | - uint32_t vbe_start_addr; | ||
92 | - uint32_t vbe_line_offset; | 60 | + |
61 | +#define VGA_STATE_COMMON_BOCHS_VBE \ | ||
62 | + uint16_t vbe_index; \ | ||
63 | + uint16_t vbe_regs[VBE_DISPI_INDEX_NB]; \ | ||
64 | + uint32_t vbe_start_addr; \ | ||
65 | + uint32_t vbe_line_offset; \ | ||
93 | uint32_t vbe_bank_mask; | 66 | uint32_t vbe_bank_mask; |
94 | -#endif | ||
95 | - /* display refresh support */ | ||
96 | - DisplayState *ds; | ||
97 | - uint32_t font_offsets[2]; | ||
98 | - int graphic_mode; | ||
99 | - uint8_t shift_control; | ||
100 | - uint8_t double_scan; | ||
101 | - uint32_t line_offset; | ||
102 | - uint32_t line_compare; | ||
103 | - uint32_t start_addr; | ||
104 | - uint8_t last_cw, last_ch; | ||
105 | - uint32_t last_width, last_height; /* in chars or pixels */ | ||
106 | - uint32_t last_scr_width, last_scr_height; /* in pixels */ | ||
107 | - uint8_t cursor_start, cursor_end; | ||
108 | - uint32_t cursor_offset; | ||
109 | - unsigned int (*rgb_to_pixel)(unsigned int r, unsigned int g, unsigned b); | ||
110 | - /* tell for each page if it has been updated since the last time */ | ||
111 | - uint32_t last_palette[256]; | 67 | + |
68 | +#else | ||
69 | + | ||
70 | +#define VGA_STATE_COMMON_BOCHS_VBE | ||
71 | + | ||
72 | +#endif /* !CONFIG_BOCHS_VBE */ | ||
73 | + | ||
112 | #define CH_ATTR_SIZE (160 * 100) | 74 | #define CH_ATTR_SIZE (160 * 100) |
75 | + | ||
76 | +#define VGA_STATE_COMMON \ | ||
77 | + uint8_t *vram_ptr; \ | ||
78 | + unsigned long vram_offset; \ | ||
79 | + unsigned int vram_size; \ | ||
80 | + uint32_t latch; \ | ||
81 | + uint8_t sr_index; \ | ||
82 | + uint8_t sr[256]; \ | ||
83 | + uint8_t gr_index; \ | ||
84 | + uint8_t gr[256]; \ | ||
85 | + uint8_t ar_index; \ | ||
86 | + uint8_t ar[21]; \ | ||
87 | + int ar_flip_flop; \ | ||
88 | + uint8_t cr_index; \ | ||
89 | + uint8_t cr[256]; /* CRT registers */ \ | ||
90 | + uint8_t msr; /* Misc Output Register */ \ | ||
91 | + uint8_t fcr; /* Feature Control Register */ \ | ||
92 | + uint8_t st00; /* status 0 */ \ | ||
93 | + uint8_t st01; /* status 1 */ \ | ||
94 | + uint8_t dac_state; \ | ||
95 | + uint8_t dac_sub_index; \ | ||
96 | + uint8_t dac_read_index; \ | ||
97 | + uint8_t dac_write_index; \ | ||
98 | + uint8_t dac_cache[3]; /* used when writing */ \ | ||
99 | + uint8_t palette[768]; \ | ||
100 | + int32_t bank_offset; \ | ||
101 | + int (*get_bpp)(struct VGAState *s); \ | ||
102 | + void (*get_offsets)(struct VGAState *s, \ | ||
103 | + uint32_t *pline_offset, \ | ||
104 | + uint32_t *pstart_addr); \ | ||
105 | + VGA_STATE_COMMON_BOCHS_VBE \ | ||
106 | + /* display refresh support */ \ | ||
107 | + DisplayState *ds; \ | ||
108 | + uint32_t font_offsets[2]; \ | ||
109 | + int graphic_mode; \ | ||
110 | + uint8_t shift_control; \ | ||
111 | + uint8_t double_scan; \ | ||
112 | + uint32_t line_offset; \ | ||
113 | + uint32_t line_compare; \ | ||
114 | + uint32_t start_addr; \ | ||
115 | + uint8_t last_cw, last_ch; \ | ||
116 | + uint32_t last_width, last_height; /* in chars or pixels */ \ | ||
117 | + uint32_t last_scr_width, last_scr_height; /* in pixels */ \ | ||
118 | + uint8_t cursor_start, cursor_end; \ | ||
119 | + uint32_t cursor_offset; \ | ||
120 | + unsigned int (*rgb_to_pixel)(unsigned int r, \ | ||
121 | + unsigned int g, unsigned b); \ | ||
122 | + /* tell for each page if it has been updated since the last time */ \ | ||
123 | + uint32_t last_palette[256]; \ | ||
113 | uint32_t last_ch_attr[CH_ATTR_SIZE]; /* XXX: make it dynamic */ | 124 | uint32_t last_ch_attr[CH_ATTR_SIZE]; /* XXX: make it dynamic */ |
125 | + | ||
126 | + | ||
127 | +typedef struct VGAState { | ||
128 | + VGA_STATE_COMMON | ||
114 | } VGAState; | 129 | } VGAState; |
115 | 130 | ||
116 | void vga_common_init(VGAState *s, DisplayState *ds, uint8_t *vga_ram_base, | 131 | void vga_common_init(VGAState *s, DisplayState *ds, uint8_t *vga_ram_base, |