Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- struct reg86u r;
- r.u.w.ax = SET_VBE_MODE; // VBE call, function 02 -- set VBE mode
- r.u.w.bx = 1<<14 | 0x105; // set bit 14: linear framebuffer
- r.u.b.intno = 0x10;
- if( sys_int86(&r) != OK ) {
- printf("set_vbe_mode: sys_int86() failed \n");return NULL;
- }
- //vg_exit();
- vbe_mode_info_t vmi_p;
- if(vbe_get_mode_info(mode,&vmi_p)!=0){
- printf("vbe return failed");return NULL;
- }
- //vg_exit();
- h_res = vmi_p.XResolution;
- v_res = vmi_p.YResolution;
- bits_per_pixel = vmi_p.BitsPerPixel;
- vg_exit();
- struct mem_range mr;
- //vg_exit();
- unsigned int vram_base = VRAM_PHYS_ADDR; /*VRAM’s physical addresss*/
- unsigned int vram_size = v_res * h_res * (bits_per_pixel /8); /*VRAM’s size, but you can use the frame-buffer size, instead*/
- //vg_exit();
- /*Allow memory mapping*/
- mr.mr_base = (phys_bytes) vram_base;
- mr.mr_limit = mr.mr_base + vram_size;
- //vg_exit();
- int ans;
- if (OK != (ans = sys_privctl(SELF, SYS_PRIV_ADD_MEM, &mr)))
- panic("sys_privctl (ADD_MEM) failed: %d\n", r);
- //vg_exit();
- /*Map memory*/
- video_mem = vm_map_phys(SELF, (void *) mr.mr_base, vram_size);
- if (video_mem == MAP_FAILED)
- panic("couldn’t map video memory");
- vg_exit(); //este vg_exit não faz sair
- return video_mem;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement