Some intcall() misuses the input biosregs as output in
cf06de7b9cdd3efee7a59dced1977b3c21d43732
This fixes the problem vga=ask boot option doesn't show enough modes.
Signed-off-by: Akinobu Mita <akinobu.mita@gmail.com>
LKML-Reference: <
20090701021307.GA3127@localhost.localdomain>
Signed-off-by: H. Peter Anvin <hpa@zytor.com>
 
        ireg.al = mode;         /* AH=0x00 Set Video Mode */
        intcall(0x10, &ireg, NULL);
 
-
        ireg.ah = 0x0f;         /* Get Current Video Mode */
        intcall(0x10, &ireg, &oreg);
 
        do_restore = 1;         /* Assume video contents were lost */
 
        /* Not all BIOSes are clean with the top bit */
-       new_mode = ireg.al & 0x7f;
+       new_mode = oreg.al & 0x7f;
 
        if (new_mode == mode)
                return 0;       /* Mode change OK */
 
        ireg.di = (size_t)&vginfo;
        intcall(0x10, &ireg, &oreg);
 
-       if (ireg.ax != 0x004f ||
+       if (oreg.ax != 0x004f ||
            vginfo.signature != VESA_MAGIC ||
            vginfo.version < 0x0102)
                return 0;       /* Not present */
                ireg.di = (size_t)&vminfo;
                intcall(0x10, &ireg, &oreg);
 
-               if (ireg.ax != 0x004f)
+               if (oreg.ax != 0x004f)
                        continue;
 
                if ((vminfo.mode_attr & 0x15) == 0x05) {