aboutsummaryrefslogtreecommitdiffstats
path: root/vgasrc/bochsvga.c
diff options
context:
space:
mode:
authorKevin O'Connor <kevin@koconnor.net>2012-01-09 20:55:31 -0500
committerKevin O'Connor <kevin@koconnor.net>2012-01-14 17:19:39 -0500
commit34203cdf8a89c747e221005850a4558252235360 (patch)
tree242c7c5d45d96fc25612612048c763ffbbfcd856 /vgasrc/bochsvga.c
parentc4a0b976c06837636533d561c59d22feb03baec3 (diff)
downloadseabios-34203cdf8a89c747e221005850a4558252235360.tar.gz
vgabios: Unify code to generate the vbe mode list.
Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
Diffstat (limited to 'vgasrc/bochsvga.c')
-rw-r--r--vgasrc/bochsvga.c18
1 files changed, 6 insertions, 12 deletions
diff --git a/vgasrc/bochsvga.c b/vgasrc/bochsvga.c
index d1919ecd..5ab1bc22 100644
--- a/vgasrc/bochsvga.c
+++ b/vgasrc/bochsvga.c
@@ -199,26 +199,20 @@ static int mode_valid(struct vgamode_s *vmode_g)
return 1;
}
-int
-bochsvga_list_modes(u16 seg, u16 ptr)
+void
+bochsvga_list_modes(u16 seg, u16 *dest, u16 *last)
{
- int count = 0;
- u16 *dest = (u16 *)(u32)ptr;
-
struct bochsvga_mode *m = bochsvga_modes;
- for (; m < &bochsvga_modes[ARRAY_SIZE(bochsvga_modes)]; m++) {
+ for (; m < &bochsvga_modes[ARRAY_SIZE(bochsvga_modes)] && dest<last; m++) {
if (!mode_valid(&m->info))
continue;
dprintf(1, "VBE found mode %x valid.\n", GET_GLOBAL(m->mode));
- SET_FARVAR(seg, dest[count], GET_GLOBAL(m->mode));
-
- count++;
+ SET_FARVAR(seg, *dest, GET_GLOBAL(m->mode));
+ dest++;
}
- SET_FARVAR(seg, dest[count], 0xffff); /* End of list */
-
- return count;
+ stdvga_list_modes(seg, dest, last);
}
int