]> git.ipfire.org Git - thirdparty/grub.git/commitdiff
Make grub_console_real_putchar grub_console_putchar
authorVladimir 'phcoder' Serbinenko <phcoder@gmail.com>
Wed, 17 Mar 2010 07:37:48 +0000 (08:37 +0100)
committerVladimir 'phcoder' Serbinenko <phcoder@gmail.com>
Wed, 17 Mar 2010 07:37:48 +0000 (08:37 +0100)
include/grub/i386/pc/console.h
include/grub/i386/vga_common.h
kern/i386/pc/startup.S
term/i386/pc/vga_text.c
term/i386/vga_common.c

index 2a74d152c0ce48395df58bb7debdcf78586f064d..b677bb8869dc123e225f9ab53acfcaf46cbb2679 100644 (file)
@@ -46,6 +46,7 @@ grub_uint16_t grub_console_getxy (void);
 void grub_console_gotoxy (grub_uint8_t x, grub_uint8_t y);
 void grub_console_cls (void);
 void grub_console_setcursor (int on);
+void grub_console_putchar (const struct grub_unicode_glyph *c);
 
 /* Initialize the console system.  */
 void grub_console_init (void);
index 19f14ebed858b980e9f841f91cb0662d5944c4c1..7df2b9e9e865329df29034dcd9a1662c7dd60a2a 100644 (file)
 
 extern grub_uint8_t grub_console_cur_color;
 
-void
-grub_console_putchar (const struct grub_unicode_glyph *c);
-grub_ssize_t
-grub_console_getcharwidth (const struct grub_unicode_glyph *c);
 grub_uint16_t grub_console_getwh (void);
 void grub_console_setcolorstate (grub_term_color_state state);
 void grub_console_setcolor (grub_uint8_t normal_color, grub_uint8_t highlight_color);
 void grub_console_getcolor (grub_uint8_t *normal_color, grub_uint8_t *highlight_color);
 
-/* Implemented in both kern/i386/pc/startup.S and vga_text.c;  this symbol
-   is not exported, so there's no collision, but vga_common.c expects this
-   prototype to be the same.  */
-void grub_console_real_putchar (int c);
-
 #endif /* ! GRUB_VGA_COMMON_CPU_HEADER */
index 23f3f398ea34329829dffdf1ca5f08dbeb8a3ca0..c12dfbb573753cb29a771f9db503df127f4e47e7 100644 (file)
@@ -1064,7 +1064,7 @@ xsmap:
 
 
 /*
- * void grub_console_real_putchar (int c)
+ * void grub_console_putchar (const struct grub_unicode_glyph *c)
  *
  * Put the character C on the console. Because GRUB wants to write a
  * character with an attribute, this implementation is a bit tricky.
@@ -1077,8 +1077,9 @@ xsmap:
  * get the height of the screen, and the TELETYPE OUTPUT BIOS call doesn't
  * support setting a background attribute.
  */
-FUNCTION(grub_console_real_putchar)
-       movl    %eax, %edx
+FUNCTION(grub_console_putchar)
+       /* Retrieve the base character.  */
+       movl    0(%eax), %edx
        pusha
        movb    EXT_C(grub_console_cur_color), %bl
 
index 379eb35794edf4a5966e9b6bb51684f60a2624c7..3f352afb4dd0854e1ff4d53b3ae39f1399a74eb4 100644 (file)
@@ -83,10 +83,10 @@ inc_x (void)
     grub_curr_x++;
 }
 
-void
-grub_console_real_putchar (int c)
+static void
+grub_vga_text_putchar (const struct grub_unicode_glyph *c)
 {
-  switch (c)
+  switch (c->base)
     {
       case '\b':
        if (grub_curr_x != 0)
@@ -99,8 +99,8 @@ grub_console_real_putchar (int c)
        grub_curr_x = 0;
        break;
       default:
-       screen_write_char (grub_curr_x,
-                          grub_curr_y, c | (grub_console_cur_color << 8));
+       screen_write_char (grub_curr_x, grub_curr_y,
+                          c->base | (grub_console_cur_color << 8));
        inc_x ();
     }
 
@@ -154,7 +154,7 @@ static struct grub_term_output grub_vga_text_term =
     .name = "vga_text",
     .init = grub_vga_text_init_fini,
     .fini = grub_vga_text_init_fini,
-    .putchar = grub_console_putchar,
+    .putchar = grub_vga_text_putchar,
     .getwh = grub_console_getwh,
     .getxy = grub_vga_text_getxy,
     .gotoxy = grub_vga_text_gotoxy,
index f88dbb04e1d87d0bdac975e0c20f494eccc910a2..894c5d9118398aa40d5748f1e2f27c0256bf6c4f 100644 (file)
@@ -25,12 +25,6 @@ static grub_uint8_t grub_console_standard_color = 0x7;
 static grub_uint8_t grub_console_normal_color = 0x7;
 static grub_uint8_t grub_console_highlight_color = 0x70;
 
-void
-grub_console_putchar (const struct grub_unicode_glyph *c)
-{
-  grub_console_real_putchar (c->base);
-}
-
 grub_uint16_t
 grub_console_getwh (void)
 {