Advertisement
Guest User

Untitled

a guest
Nov 22nd, 2017
62
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.26 KB | None | 0 0
  1. struct reg86u r;
  2.  
  3. r.u.w.ax = SET_VBE_MODE; // VBE call, function 02 -- set VBE mode
  4. r.u.w.bx = 1<<14 | 0x105; // set bit 14: linear framebuffer
  5. r.u.b.intno = 0x10;
  6.  
  7. if( sys_int86(&r) != OK ) {
  8. printf("set_vbe_mode: sys_int86() failed \n");return NULL;
  9. }
  10.  
  11. //vg_exit();
  12.  
  13. vbe_mode_info_t vmi_p;
  14. if(vbe_get_mode_info(mode,&vmi_p)!=0){
  15. printf("vbe return failed");return NULL;
  16. }
  17.  
  18. //vg_exit();
  19.  
  20. h_res = vmi_p.XResolution;
  21. v_res = vmi_p.YResolution;
  22. bits_per_pixel = vmi_p.BitsPerPixel;
  23.  
  24. vg_exit();
  25.  
  26. struct mem_range mr;
  27.  
  28. //vg_exit();
  29.  
  30. unsigned int vram_base = VRAM_PHYS_ADDR; /*VRAM’s physical addresss*/
  31. unsigned int vram_size = v_res * h_res * (bits_per_pixel /8); /*VRAM’s size, but you can use the frame-buffer size, instead*/
  32.  
  33. //vg_exit();
  34.  
  35. /*Allow memory mapping*/
  36. mr.mr_base = (phys_bytes) vram_base;
  37. mr.mr_limit = mr.mr_base + vram_size;
  38.  
  39. //vg_exit();
  40.  
  41. int ans;
  42. if (OK != (ans = sys_privctl(SELF, SYS_PRIV_ADD_MEM, &mr)))
  43. panic("sys_privctl (ADD_MEM) failed: %d\n", r);
  44.  
  45. //vg_exit();
  46.  
  47. /*Map memory*/
  48.  
  49. video_mem = vm_map_phys(SELF, (void *) mr.mr_base, vram_size);
  50. if (video_mem == MAP_FAILED)
  51. panic("couldn’t map video memory");
  52.  
  53.  
  54. vg_exit(); //este vg_exit não faz sair
  55.  
  56. return video_mem;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement