source: mainline/kernel/arch/ia32/src/boot/vesa_prot.inc@ 9d58539

lfn serial ticket/834-toolchain-update topic/msim-upgrade topic/simplify-dev-export
Last change on this file since 9d58539 was 9d58539, checked in by Prutkov Alex <prutkov.alex@…>, 14 years ago

Fixed unix permissions for all files

  • Property mode set to 100644
File size: 1.9 KB
Line 
1#ifdef CONFIG_FB
2
3#define MBINFO_BIT_CMDLINE 2
4#define MBINFO_OFFSET_CMDLINE 16
5
6 /* Copy real mode VESA initialization code */
7
8 pm_status $status_vesa_copy
9
10 mov $vesa_init, %esi
11 mov $VESA_INIT_SEGMENT << 4, %edi
12 mov $e_vesa_init - vesa_init, %ecx
13 rep movsb
14
15 /* Check for multiboot command line */
16
17 pm_status $status_multiboot_cmdline
18
19 mov multiboot_eax, %eax
20 cmp $MULTIBOOT_LOADER_MAGIC, %eax
21 jne no_cmdline
22
23 mov multiboot_ebx, %ebx
24 mov (%ebx), %eax
25 bt $MBINFO_BIT_CMDLINE, %eax
26 jnc no_cmdline
27
28 /* Skip the kernel path in command line */
29
30 mov MBINFO_OFFSET_CMDLINE(%ebx), %esi
31
32 skip_loop:
33 lodsb
34
35 cmp $0, %al
36 je no_cmdline
37
38 cmp $' ', %al
39 je skip_loop_done
40
41 jmp skip_loop
42 skip_loop_done:
43
44 space_loop:
45 mov (%esi), %al
46
47 cmp $0, %al
48 je no_cmdline
49
50 cmp $' ', %al
51 jne space_loop_done
52
53 inc %esi
54 jmp space_loop
55 space_loop_done:
56
57 /* Copy at most 23 characters from command line */
58
59 mov $VESA_INIT_SEGMENT << 4, %edi
60 add $default_mode - vesa_init, %edi
61 mov $23, %ecx
62
63 cmd_loop:
64 lodsb
65 stosb
66
67 cmp $0, %al
68 je cmd_loop_done
69
70 loop cmd_loop
71 cmd_loop_done:
72
73 /* Zero termination */
74
75 xor %eax, %eax
76 stosb
77
78 no_cmdline:
79
80 /* Jump to the real mode */
81
82 pm_status $status_vesa_real
83
84 mov $VESA_INIT_SEGMENT << 4, %edi
85 jmpl *%edi
86
87 vesa_meeting_point:
88 /* Returned back to protected mode */
89
90 movzx %ax, %ecx
91 mov %ecx, KA2PA(bfb_scanline)
92
93 shr $16, %eax
94 mov %ax, KA2PA(bfb_bpp)
95
96 movzx %bx, %ecx
97 mov %ecx, KA2PA(bfb_height)
98
99 shr $16, %ebx
100 mov %ebx, KA2PA(bfb_width)
101
102 mov %dl, KA2PA(bfb_green_pos)
103
104 shr $8, %edx
105 mov %dl, KA2PA(bfb_green_size)
106
107 shr $8, %edx
108 mov %dl, KA2PA(bfb_red_pos)
109
110 shr $8, %edx
111 mov %dl, KA2PA(bfb_red_size)
112
113 mov %esi, %edx
114 mov %dl, KA2PA(bfb_blue_pos)
115
116 shr $8, %edx
117 mov %dl, KA2PA(bfb_blue_size)
118
119 mov %edi, KA2PA(bfb_addr)
120#endif
Note: See TracBrowser for help on using the repository browser.