sti
#define STI(temp_reg) sti
memset(&sti, 0, sizeof sti);
sti.codeptr[i] =
for (i = STI_END; sti.codeptr[i] == 0; i--)
codesize = sti.codeptr[i] - sti.codeptr[STI_BEGIN];
sti.code = (uint8_t *)alloc(codesize);
code = sti.code;
addr = (u_int)va + sti.codeptr[STI_BEGIN];
if (sti.codeptr[i] != 0) {
sti.codeptr[i] -= sti.codeptr[0];
sti.codeptr[i] /= 4;
sti.codeptr[0] = 0;
for (i = STI_END; sti.codeptr[i] == 0; i--);
sti.codeptr[i] = 0;
sti.cfg.regions[i] = (u_int)va + ((tmp >> 18) << 12);
sti.cfg.ext_cfg = &sti.ecfg;
sti.ecfg.addr = alloc(memsize);
sti.cfg.oscr_width = cfg.owidth = cfg.fbwidth - cfg.width;
sti.cfg.oscr_height = cfg.oheight = cfg.fbheight - cfg.height;
a.in.font_addr = (uint32_t *)((uint8_t *)ip->fbbase + sti.fontbase);
unpmv = (sti_unpmv_t)(sti.code + sti.codeptr[STI_FONT_UNPMV]);
(*unpmv)(&a.flags, &a.in, &a.out, &sti.cfg);
blkmv = (sti_blkmv_t)(sti.code + sti.codeptr[STI_BLOCK_MOVE]);
(*blkmv)(&a.flags, &a.in, &a.out, &sti.cfg);
blkmv = (sti_blkmv_t)(sti.code + sti.codeptr[STI_BLOCK_MOVE]);
(*blkmv)(&a.flags, &a.in, &a.out, &sti.cfg);
blkmv = (sti_blkmv_t)(sti.code + sti.codeptr[STI_BLOCK_MOVE]);
(*blkmv)(&a.flags, &a.in, &a.out, &sti.cfg);
fontbase = sti.fontbase = parseword1(fbbase, 0x30) & ~3;
init = (sti_init_t)(sti.code + sti.codeptr[STI_INIT_GRAPH]);
(*init)(&a.flags, &a.in, &a.out, &sti.cfg);
inqconf = (sti_inqconf_t)(sti.code + sti.codeptr[STI_INQ_CONF]);
(*inqconf)(&a.flags, &a.in, ico, &sti.cfg);
} sti;
#define STI(reg) sti
sti(fd, c);
sti(fd, ' ');