Lines Matching refs:s

85 static uint8_t *vram_getb(struct hvm_hw_stdvga *s, unsigned int a)  in vram_getb()  argument
87 struct page_info *pg = s->vram_page[(a >> 12) & 0x3f]; in vram_getb()
92 static uint32_t *vram_getl(struct hvm_hw_stdvga *s, unsigned int a) in vram_getl() argument
94 struct page_info *pg = s->vram_page[(a >> 10) & 0x3f]; in vram_getl()
99 static void vram_put(struct hvm_hw_stdvga *s, void *p) in vram_put() argument
104 static void stdvga_try_cache_enable(struct hvm_hw_stdvga *s) in stdvga_try_cache_enable() argument
114 if ( s->cache != STDVGA_CACHE_UNINITIALIZED ) in stdvga_try_cache_enable()
118 s->cache = STDVGA_CACHE_ENABLED; in stdvga_try_cache_enable()
121 static void stdvga_cache_disable(struct hvm_hw_stdvga *s) in stdvga_cache_disable() argument
123 if ( s->cache != STDVGA_CACHE_ENABLED ) in stdvga_cache_disable()
127 s->cache = STDVGA_CACHE_DISABLED; in stdvga_cache_disable()
130 static bool_t stdvga_cache_is_enabled(const struct hvm_hw_stdvga *s) in stdvga_cache_is_enabled() argument
132 return s->cache == STDVGA_CACHE_ENABLED; in stdvga_cache_is_enabled()
137 struct hvm_hw_stdvga *s = &current->domain->arch.hvm_domain.stdvga; in stdvga_outb() local
138 int rc = 1, prev_stdvga = s->stdvga; in stdvga_outb()
143 s->sr_index = val; in stdvga_outb()
147 rc = (s->sr_index < sizeof(s->sr)); in stdvga_outb()
149 s->sr[s->sr_index] = val & sr_mask[s->sr_index] ; in stdvga_outb()
153 s->gr_index = val; in stdvga_outb()
157 rc = (s->gr_index < sizeof(s->gr)); in stdvga_outb()
159 s->gr[s->gr_index] = val & gr_mask[s->gr_index]; in stdvga_outb()
169 s->stdvga = (s->sr[7] == 0x00); in stdvga_outb()
171 if ( !prev_stdvga && s->stdvga ) in stdvga_outb()
174 stdvga_try_cache_enable(s); in stdvga_outb()
176 else if ( prev_stdvga && !s->stdvga ) in stdvga_outb()
205 struct hvm_hw_stdvga *s = &current->domain->arch.hvm_domain.stdvga; in stdvga_intercept_pio() local
209 spin_lock(&s->lock); in stdvga_intercept_pio()
211 spin_unlock(&s->lock); in stdvga_intercept_pio()
218 struct hvm_hw_stdvga *s, unsigned int mmio_addr) in stdvga_mem_offset() argument
220 unsigned int memory_map_mode = (s->gr[6] >> 2) & 3; in stdvga_mem_offset()
255 struct hvm_hw_stdvga *s = &current->domain->arch.hvm_domain.stdvga; in stdvga_mem_readb() local
260 addr = stdvga_mem_offset(s, addr); in stdvga_mem_readb()
264 if ( s->sr[4] & 0x08 ) in stdvga_mem_readb()
267 vram_b = vram_getb(s, addr); in stdvga_mem_readb()
269 vram_put(s, vram_b); in stdvga_mem_readb()
271 else if ( s->gr[5] & 0x10 ) in stdvga_mem_readb()
274 plane = (s->gr[4] & 2) | (addr & 1); in stdvga_mem_readb()
275 vram_b = vram_getb(s, ((addr & ~1) << 1) | plane); in stdvga_mem_readb()
277 vram_put(s, vram_b); in stdvga_mem_readb()
282 vram_l = vram_getl(s, addr); in stdvga_mem_readb()
283 s->latch = *vram_l; in stdvga_mem_readb()
284 vram_put(s, vram_l); in stdvga_mem_readb()
286 if ( !(s->gr[5] & 0x08) ) in stdvga_mem_readb()
289 plane = s->gr[4]; in stdvga_mem_readb()
290 ret = GET_PLANE(s->latch, plane); in stdvga_mem_readb()
295 ret = (s->latch ^ mask16[s->gr[2]]) & mask16[s->gr[7]]; in stdvga_mem_readb()
350 struct hvm_hw_stdvga *s = &current->domain->arch.hvm_domain.stdvga; in stdvga_mem_writeb() local
355 addr = stdvga_mem_offset(s, addr); in stdvga_mem_writeb()
359 if ( s->sr[4] & 0x08 ) in stdvga_mem_writeb()
364 if ( s->sr[2] & mask ) in stdvga_mem_writeb()
366 vram_b = vram_getb(s, addr); in stdvga_mem_writeb()
368 vram_put(s, vram_b); in stdvga_mem_writeb()
371 else if ( s->gr[5] & 0x10 ) in stdvga_mem_writeb()
374 plane = (s->gr[4] & 2) | (addr & 1); in stdvga_mem_writeb()
376 if ( s->sr[2] & mask ) in stdvga_mem_writeb()
379 vram_b = vram_getb(s, addr); in stdvga_mem_writeb()
381 vram_put(s, vram_b); in stdvga_mem_writeb()
386 write_mode = s->gr[5] & 3; in stdvga_mem_writeb()
392 b = s->gr[3] & 7; in stdvga_mem_writeb()
398 set_mask = mask16[s->gr[1]]; in stdvga_mem_writeb()
399 val = (val & ~set_mask) | (mask16[s->gr[0]] & set_mask); in stdvga_mem_writeb()
400 bit_mask = s->gr[8]; in stdvga_mem_writeb()
403 val = s->latch; in stdvga_mem_writeb()
407 bit_mask = s->gr[8]; in stdvga_mem_writeb()
411 b = s->gr[3] & 7; in stdvga_mem_writeb()
414 bit_mask = s->gr[8] & val; in stdvga_mem_writeb()
415 val = mask16[s->gr[0]]; in stdvga_mem_writeb()
420 func_select = s->gr[3] >> 3; in stdvga_mem_writeb()
429 val &= s->latch; in stdvga_mem_writeb()
433 val |= s->latch; in stdvga_mem_writeb()
437 val ^= s->latch; in stdvga_mem_writeb()
444 val = (val & bit_mask) | (s->latch & ~bit_mask); in stdvga_mem_writeb()
448 mask = s->sr[2]; in stdvga_mem_writeb()
450 vram_l = vram_getl(s, addr); in stdvga_mem_writeb()
452 vram_put(s, vram_l); in stdvga_mem_writeb()
460 struct hvm_hw_stdvga *s = &current->domain->arch.hvm_domain.stdvga; in stdvga_mem_write() local
471 if ( !stdvga_cache_is_enabled(s) || !s->stdvga ) in stdvga_mem_write()
520 struct hvm_hw_stdvga *s = &current->domain->arch.hvm_domain.stdvga; in stdvga_mem_accept() local
531 spin_lock(&s->lock); in stdvga_mem_accept()
545 stdvga_cache_disable(s); in stdvga_mem_accept()
550 (!stdvga_cache_is_enabled(s) || !s->stdvga) ) in stdvga_mem_accept()
557 spin_unlock(&s->lock); in stdvga_mem_accept()
563 struct hvm_hw_stdvga *s = &current->domain->arch.hvm_domain.stdvga; in stdvga_mem_complete() local
565 spin_unlock(&s->lock); in stdvga_mem_complete()
577 struct hvm_hw_stdvga *s = &d->arch.hvm_domain.stdvga; in stdvga_init() local
584 memset(s, 0, sizeof(*s)); in stdvga_init()
585 spin_lock_init(&s->lock); in stdvga_init()
587 for ( i = 0; i != ARRAY_SIZE(s->vram_page); i++ ) in stdvga_init()
592 s->vram_page[i] = pg; in stdvga_init()
596 if ( i == ARRAY_SIZE(s->vram_page) ) in stdvga_init()
618 struct hvm_hw_stdvga *s = &d->arch.hvm_domain.stdvga; in stdvga_deinit() local
624 for ( i = 0; i != ARRAY_SIZE(s->vram_page); i++ ) in stdvga_deinit()
626 if ( s->vram_page[i] == NULL ) in stdvga_deinit()
628 free_domheap_page(s->vram_page[i]); in stdvga_deinit()
629 s->vram_page[i] = NULL; in stdvga_deinit()