int get_machdep_info_x86(void) { unsigned long vmlist, vmalloc_start; /* PAE */ if ((vt.mem_flags & MEMORY_X86_PAE) || ((SYMBOL(pkmap_count) != NOT_FOUND_SYMBOL) && (SYMBOL(pkmap_count_next) != NOT_FOUND_SYMBOL) && ((SYMBOL(pkmap_count_next)-SYMBOL(pkmap_count))/sizeof(int)) == 512)) { DEBUG_MSG("\n"); DEBUG_MSG("PAE : ON\n"); vt.mem_flags |= MEMORY_X86_PAE; info->max_physmem_bits = _MAX_PHYSMEM_BITS_PAE; } else { DEBUG_MSG("\n"); DEBUG_MSG("PAE : OFF\n"); info->max_physmem_bits = _MAX_PHYSMEM_BITS; } info->page_offset = __PAGE_OFFSET; if (SYMBOL(_stext) == NOT_FOUND_SYMBOL) { ERRMSG("Can't get the symbol of _stext.\n"); return FALSE; } info->kernel_start = SYMBOL(_stext) & ~KVBASE_MASK; DEBUG_MSG("kernel_start : %lx\n", info->kernel_start); if (!remap_init()) return FALSE; /* * For the compatibility, makedumpfile should run without the symbol * vmlist and the offset of vm_struct.addr if they are not necessary. */ if ((SYMBOL(vmlist) == NOT_FOUND_SYMBOL) || (OFFSET(vm_struct.addr) == NOT_FOUND_STRUCTURE)) { return TRUE; } if (!readmem(VADDR, SYMBOL(vmlist), &vmlist, sizeof(vmlist))) { ERRMSG("Can't get vmlist.\n"); return FALSE; } if (!readmem(VADDR, vmlist + OFFSET(vm_struct.addr), &vmalloc_start, sizeof(vmalloc_start))) { ERRMSG("Can't get vmalloc_start.\n"); return FALSE; } info->vmalloc_start = vmalloc_start; DEBUG_MSG("vmalloc_start: %lx\n", vmalloc_start); return TRUE; }
/* * Initialize the interface between the VGA emulator and X. * Check if X's color depth is supported. */ int remapper_init(int have_true_color, int have_shmap, int features, ColorSpaceDesc *csd) { int remap_src_modes, err, ximage_mode; // set_remap_debug_msg(stderr); if(have_true_color) { switch(csd->bits) { case 1: ximage_mode = MODE_TRUE_1_MSB; break; case 15: ximage_mode = MODE_TRUE_15; break; case 16: ximage_mode = MODE_TRUE_16; break; case 24: ximage_mode = MODE_TRUE_24; break; case 32: ximage_mode = MODE_TRUE_32; break; default: ximage_mode = MODE_UNSUP; } } else { switch(csd->bits) { case 8: ximage_mode = have_shmap ? MODE_TRUE_8 : MODE_PSEUDO_8; break; default: ximage_mode = MODE_UNSUP; } } remap_src_modes = find_supported_modes(ximage_mode); remap_obj = remap_init(ximage_mode, features, csd); if (features & RFF_BITMAP_FONT) { use_bitmap_font = 1; register_text_system(&Text_bitmap); init_text_mapper(ximage_mode, features, csd); } err = sem_init(&render_sem, 0, 0); assert(!err); err = pthread_create(&render_thr, NULL, render_thread, NULL); assert(!err); return remap_src_modes; }