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

Last change on this file was 8be3230, checked in by Jiri Svoboda <jiri@…>, 7 years ago

Revert "Remove realmode VESA code" - needs more work

This reverts commit 8781e9d05ac3f6aeaa3ad709c5af9efa3209b87a.

  • 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 /*
91 * Initialize Global Descriptor Table and
92 * Interrupt Descriptor Table registers
93 */
94 lgdtl bootstrap_gdtr
95 lidtl bootstrap_idtr
96
97 movzx %ax, %ecx
98 mov %ecx, KA2PA(bfb_scanline)
99
100 shr $16, %eax
101 mov %ax, KA2PA(bfb_bpp)
102
103 movzx %bx, %ecx
104 mov %ecx, KA2PA(bfb_height)
105
106 shr $16, %ebx
107 mov %ebx, KA2PA(bfb_width)
108
109 mov %dl, KA2PA(bfb_green_pos)
110
111 shr $8, %edx
112 mov %dl, KA2PA(bfb_green_size)
113
114 shr $8, %edx
115 mov %dl, KA2PA(bfb_red_pos)
116
117 shr $8, %edx
118 mov %dl, KA2PA(bfb_red_size)
119
120 mov %esi, %edx
121 mov %dl, KA2PA(bfb_blue_pos)
122
123 shr $8, %edx
124 mov %dl, KA2PA(bfb_blue_size)
125
126 mov %edi, KA2PA(bfb_addr)
127#endif
Note: See TracBrowser for help on using the repository browser.