void fbcon_ega_planes_putc(struct vc_data *conp, struct display *p, int c, int yy, int xx) { int fg = attr_fgcol(p,c); int bg = attr_bgcol(p,c); int y; u8 *cdat = p->fontdata + (c & p->charmask) * fontheight(p); char *where = p->screen_base + xx + yy * p->line_length * fontheight(p); setmode(0); setop(0); setsr(0xf); setcolor(bg); selectmask(); setmask(0xff); for (y = 0; y < fontheight(p); y++, where += p->line_length) rmw(where); where -= p->line_length * y; setcolor(fg); selectmask(); for (y = 0; y < fontheight(p); y++, where += p->line_length) if (cdat[y]) { setmask(cdat[y]); rmw(where); } }
void vga16_set_pixel(int x, int y, unsigned long c) { volatile char *where; setmode(0); setop(0); setcolor(c); selectmask(); setmask(0x80 >> (x % 8)); where = fb_mem + y * 80 + x/8; rmw(where); }
void fbcon_vga_planes_revc(struct display *p, int xx, int yy) { char *where = p->screen_base + xx + yy * p->line_length * fontheight(p); int y; setmode(0); setop(0x18); setsr(0xf); setcolor(0xf); selectmask(); setmask(0xff); for (y = 0; y < fontheight(p); y++) { rmw(where); where += p->line_length; } }
T fetch_xor(T value, memory_order mo, debug_info_param info) { return rmw(rmw_type_t<rmw_type_xor>(), value, mo, info); }
T fetch_sub(typename atomic_add_type<T>::type value, memory_order mo, debug_info_param info) { return rmw(rmw_type_t<rmw_type_sub>(), value, mo, info); }
T exchange(T xchg, memory_order mo, debug_info_param info) { return rmw(rmw_type_t<rmw_type_swap>(), xchg, mo, info); }