Changeset 1496f87 in mainline
- Timestamp:
- 2009-03-18T16:26:01Z (16 years ago)
- Branches:
- lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
- Children:
- eada065e
- Parents:
- 7dfc120a
- Location:
- kernel/arch/ia32/src
- Files:
-
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
kernel/arch/ia32/src/boot/vesa_prot.inc
r7dfc120a r1496f87 83 83 # returned back to protected mode 84 84 85 mov % esi, KA2PA(vesa_ph_addr)86 mov %di, KA2PA(vesa_height)87 shr $16, %edi88 mov %di, KA2PA(vesa_width)89 mov %bx, KA2PA(vesa_ scanline)85 mov %ax, KA2PA(vesa_scanline) 86 shr $16, %eax 87 mov %ax, KA2PA(vesa_bpp) 88 89 mov %bx, KA2PA(vesa_height) 90 90 shr $16, %ebx 91 mov %bx, KA2PA(vesa_bpp) 91 mov %bx, KA2PA(vesa_width) 92 93 mov %dl, KA2PA(vesa_green_pos) 94 shr $8, %edx 95 mov %dl, KA2PA(vesa_green_mask) 96 shr $8, %edx 97 mov %dl, KA2PA(vesa_red_pos) 98 shr $8, %edx 99 mov %dl, KA2PA(vesa_red_mask) 100 101 mov %esi, %edx 102 mov %dl, KA2PA(vesa_blue_pos) 103 shr $8, %edx 104 mov %dl, KA2PA(vesa_blue_mask) 105 106 mov %edi, KA2PA(vesa_ph_addr) 92 107 #endif -
kernel/arch/ia32/src/boot/vesa_real.inc
r7dfc120a r1496f87 5 5 #define VESA_INFO_SIZE 1024 6 6 7 #define VESA_MODE_ATTRIBUTES_OFFSET 0 8 #define VESA_MODE_LIST_PTR_OFFSET 14 9 #define VESA_MODE_SCANLINE_OFFSET 16 10 #define VESA_MODE_WIDTH_OFFSET 18 11 #define VESA_MODE_HEIGHT_OFFSET 20 12 #define VESA_MODE_BPP_OFFSET 25 13 #define VESA_MODE_PHADDR_OFFSET 40 14 15 #define VESA_END_OF_MODES 0xffff 16 17 #define VESA_OK 0x4f 18 19 #define VESA_GET_INFO 0x4f00 20 #define VESA_GET_MODE_INFO 0x4f01 21 #define VESA_SET_MODE 0x4f02 22 #define VESA_SET_PALETTE 0x4f09 7 #define VESA_MODE_ATTRIBUTES_OFFSET 0 8 #define VESA_MODE_LIST_PTR_OFFSET 14 9 #define VESA_MODE_SCANLINE_OFFSET 16 10 #define VESA_MODE_WIDTH_OFFSET 18 11 #define VESA_MODE_HEIGHT_OFFSET 20 12 #define VESA_MODE_BPP_OFFSET 25 13 #define VESA_MODE_RED_MASK_OFFSET 31 14 #define VESA_MODE_RED_POS_OFFSET 32 15 #define VESA_MODE_GREEN_MASK_OFFSET 33 16 #define VESA_MODE_GREEN_POS_OFFSET 34 17 #define VESA_MODE_BLUE_MASK_OFFSET 35 18 #define VESA_MODE_BLUE_POS_OFFSET 36 19 #define VESA_MODE_PHADDR_OFFSET 40 20 21 #define VESA_END_OF_MODES 0xffff 22 23 #define VESA_OK 0x4f 24 25 #define VESA_GET_INFO 0x4f00 26 #define VESA_GET_MODE_INFO 0x4f01 27 #define VESA_SET_MODE 0x4f02 28 #define VESA_SET_PALETTE 0x4f09 23 29 24 30 .code32 … … 278 284 vga_not_set: 279 285 280 mov VESA_MODE_PHADDR_OFFSET(%di), %esi 281 mov VESA_MODE_WIDTH_OFFSET(%di), %ax 286 # store mode parameters 287 # eax = bpp[8] scanline[16] 288 # ebx = width[16] height[16] 289 # edx = red_mask[8] red_pos[8] green_mask[8] green_pos[8] 290 # esi = blue_mask[8] blue_pos[8] 291 # edi = linear frame buffer 292 293 mov VESA_MODE_BPP_OFFSET(%di), %al 294 xor %ah, %ah 282 295 shl $16, %eax 283 mov VESA_MODE_ HEIGHT_OFFSET(%di), %ax284 mov VESA_MODE_BPP_OFFSET(%di), %bl285 xor %bh, %bh296 mov VESA_MODE_SCANLINE_OFFSET(%di), %ax 297 298 mov VESA_MODE_WIDTH_OFFSET(%di), %bx 286 299 shl $16, %ebx 287 mov VESA_MODE_SCANLINE_OFFSET(%di), %bx 288 mov %eax, %edi 300 mov VESA_MODE_HEIGHT_OFFSET(%di), %bx 301 302 mov VESA_MODE_BLUE_MASK_OFFSET(%di), %dl 303 shl $8, %edx 304 mov VESA_MODE_BLUE_POS_OFFSET(%di), %dl 305 mov %edx, %esi 306 307 mov VESA_MODE_RED_MASK_OFFSET(%di), %dl 308 shl $8, %edx 309 mov VESA_MODE_RED_POS_OFFSET(%di), %dl 310 shl $8, %edx 311 mov VESA_MODE_GREEN_MASK_OFFSET(%di), %dl 312 shl $8, %edx 313 mov VESA_MODE_GREEN_POS_OFFSET(%di), %dl 314 315 mov VESA_MODE_PHADDR_OFFSET(%di), %edi 289 316 290 317 vesa_leave_real: 291 318 292 mov %cr0, %e ax293 or $1, %e ax294 mov %e ax, %cr0319 mov %cr0, %ecx 320 or $1, %ecx 321 mov %ecx, %cr0 295 322 296 323 jmp vesa_leave_real2 -
kernel/arch/ia32/src/drivers/vesa.c
r7dfc120a r1496f87 57 57 uint16_t vesa_scanline; 58 58 59 uint8_t vesa_red_mask; 60 uint8_t vesa_red_pos; 61 62 uint8_t vesa_green_mask; 63 uint8_t vesa_green_pos; 64 65 uint8_t vesa_blue_mask; 66 uint8_t vesa_blue_pos; 67 59 68 int vesa_present(void) 60 69 { … … 74 83 break; 75 84 case 16: 76 visual = VISUAL_RGB_5_6_5; 85 if ((vesa_red_mask == 5) && (vesa_red_pos == 10) 86 && (vesa_green_mask == 5) && (vesa_green_pos == 5) 87 && (vesa_blue_mask == 5) && (vesa_blue_pos == 0)) 88 visual = VISUAL_RGB_5_5_5; 89 else 90 visual = VISUAL_RGB_5_6_5; 77 91 break; 78 92 case 24:
Note:
See TracChangeset
for help on using the changeset viewer.