vgabios: Don't call int10 during mode switch.
authorKevin O'Connor <kevin@koconnor.net>
Sat, 31 Dec 2011 21:22:35 +0000 (16:22 -0500)
committerKevin O'Connor <kevin@koconnor.net>
Sat, 31 Dec 2011 21:22:35 +0000 (16:22 -0500)
Don't call int10 to load the fonts - instead call the font loading
functions directly.

Theoretically, this could change behavior if an external program has
captured int10 and redirects the font loading calls.  However, there
does not seem to be any indication that an external app could expect
that to work.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
vgasrc/vgabios.c

index 5083292e5317fa08864b23178dc0ec22a534194c..4724c4b5b9c9685d5f847a3cb27564b42d20af21 100644 (file)
@@ -46,18 +46,6 @@ struct pci_data rom_pci_data VAR16VISIBLE = {
  * Helper functions
  ****************************************************************/
 
-static inline void
-call16_vgaint(u32 eax, u32 ebx)
-{
-    asm volatile(
-        "int $0x10\n"
-        "cli\n"
-        "cld"
-        :
-        : "a"(eax), "b"(ebx)
-        : "cc", "memory");
-}
-
 static void
 perform_gray_scale_summing(u16 start, u16 count)
 {
@@ -440,8 +428,8 @@ vga_set_mode(u8 mode, u8 noclearmem)
 
     // Write the fonts in memory
     if (GET_GLOBAL(vmode_g->memmodel) & TEXT) {
-        call16_vgaint(0x1104, 0);
-        call16_vgaint(0x1103, 0);
+        stdvga_load_font(get_global_seg(), vgafont16, 0x100, 0, 0, 16);
+        stdvga_set_text_block_specifier(0);
     }
     // Set the ints 0x1F and 0x43
     SET_IVT(0x1f, SEGOFF(get_global_seg(), (u32)&vgafont8[128 * 8]));