diff options
author | Kevin O'Connor <kevin@koconnor.net> | 2009-05-31 20:46:43 -0400 |
---|---|---|
committer | Kevin O'Connor <kevin@koconnor.net> | 2009-05-31 20:46:43 -0400 |
commit | 0ad77f09fa0dc35f8ad1ede6dd1acbb68455dec7 (patch) | |
tree | 816079144f144c7f46b0b0444f11e92eaa7fa3d3 /vgasrc | |
parent | 2e86c6a805ef57686ad8af067f010e602adb5d84 (diff) | |
download | seabios-0ad77f09fa0dc35f8ad1ede6dd1acbb68455dec7.tar.gz |
VGA: Reduce stack usage.
Make 'struct carattr' 3 bytes in size - gcc does better with this.
Add 'noinline' directives to some funcs to reduce handle_10 stack usage.
Diffstat (limited to 'vgasrc')
-rw-r--r-- | vgasrc/vga.c | 10 | ||||
-rw-r--r-- | vgasrc/vgatables.h | 3 |
2 files changed, 6 insertions, 7 deletions
diff --git a/vgasrc/vga.c b/vgasrc/vga.c index 403f047b..a01b0fc3 100644 --- a/vgasrc/vga.c +++ b/vgasrc/vga.c @@ -513,7 +513,7 @@ handle_1008(struct bregs *regs) regs->ah = ca.attr; } -static void +static void noinline write_chars(u8 page, struct carattr ca, u16 count) { struct cursorpos cp = get_cursor_pos(page); @@ -581,7 +581,7 @@ handle_100d(struct bregs *regs) biosfn_read_pixel(regs->bh, regs->cx, regs->dx, ®s->ax); } -static void +static void noinline handle_100e(struct bregs *regs) { // Ralf Brown Interrupt list is WRONG on bh(page) @@ -647,7 +647,7 @@ handle_101009(struct bregs *regs) vgahw_get_all_palette_reg(regs->es, (u8*)(regs->dx + 0)); } -static void +static void noinline handle_101010(struct bregs *regs) { u8 rgb[3] = {regs->dh, regs->ch, regs->cl}; @@ -666,7 +666,7 @@ handle_101013(struct bregs *regs) vgahw_select_video_dac_color_page(regs->bl, regs->bh); } -static void +static void noinline handle_101015(struct bregs *regs) { u8 rgb[3]; @@ -987,7 +987,7 @@ handle_1012(struct bregs *regs) } -static void +static void noinline handle_1013(struct bregs *regs) { struct cursorpos cp = {regs->dl, regs->dh, regs->bh}; diff --git a/vgasrc/vgatables.h b/vgasrc/vgatables.h index 0d64586a..2eb0c719 100644 --- a/vgasrc/vgatables.h +++ b/vgasrc/vgatables.h @@ -152,8 +152,7 @@ extern u8 vgafont16alt[]; // vga.c struct carattr { - u8 car, attr; - u16 use_attr; + u8 car, attr, use_attr; }; struct cursorpos { u8 x, y, page; |