diff options
author | Kevin O'Connor <kevin@koconnor.net> | 2012-01-09 20:55:31 -0500 |
---|---|---|
committer | Kevin O'Connor <kevin@koconnor.net> | 2012-01-14 17:19:39 -0500 |
commit | 34203cdf8a89c747e221005850a4558252235360 (patch) | |
tree | 242c7c5d45d96fc25612612048c763ffbbfcd856 /vgasrc/bochsvga.c | |
parent | c4a0b976c06837636533d561c59d22feb03baec3 (diff) | |
download | seabios-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.c | 18 |
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 |