Loading arch/i386/boot/video-vesa.c +21 −13 Original line number Diff line number Diff line Loading @@ -29,7 +29,7 @@ static void vesa_store_mode_params_graphics(void); static int vesa_probe(void) { #if defined(CONFIG_VIDEO_VESA) || defined(CONFIG_FIRMWARE_EDID) u16 ax; u16 ax, cx, di; u16 mode; addr_t mode_ptr; struct mode_info *mi; Loading @@ -39,9 +39,11 @@ static int vesa_probe(void) vginfo.signature = VBE2_MAGIC; /* Optimistically assume a VESA BIOS is register-clean... */ ax = 0x4f00; asm("int $0x10" : "+a" (ax), "=m" (vginfo) : "D" (&vginfo)); di = (size_t)&vginfo; asm(INT10 : "+a" (ax), "+D" (di), "=m" (vginfo) : : "ebx", "ecx", "edx", "esi"); if (ax != 0x004f || vginfo.signature != VESA_MAGIC || Loading @@ -64,9 +66,11 @@ static int vesa_probe(void) memset(&vminfo, 0, sizeof vminfo); /* Just in case... */ ax = 0x4f01; asm("int $0x10" : "+a" (ax), "=m" (vminfo) : "c" (mode), "D" (&vminfo)); cx = mode; di = (size_t)&vminfo; asm(INT10 : "+a" (ax), "+c" (cx), "+D" (di), "=m" (vminfo) : : "ebx", "edx", "esi"); if (ax != 0x004f) continue; Loading Loading @@ -102,16 +106,18 @@ static int vesa_probe(void) static int vesa_set_mode(struct mode_info *mode) { u16 ax; u16 ax, bx, cx, di; int is_graphic; u16 vesa_mode = mode->mode - VIDEO_FIRST_VESA; memset(&vminfo, 0, sizeof vminfo); /* Just in case... */ ax = 0x4f01; asm("int $0x10" : "+a" (ax), "=m" (vminfo) : "c" (vesa_mode), "D" (&vminfo)); cx = vesa_mode; di = (size_t)&vminfo; asm(INT10 : "+a" (ax), "+c" (cx), "+D" (di), "=m" (vminfo) : : "ebx", "edx", "esi"); if (ax != 0x004f) return -1; Loading @@ -129,9 +135,11 @@ static int vesa_set_mode(struct mode_info *mode) ax = 0x4f02; asm volatile("int $0x10" : "+a" (ax) : "b" (vesa_mode), "D" (0)); bx = vesa_mode; di = 0; asm volatile(INT10 : "+a" (ax), "+b" (bx), "+D" (di) : : "ecx", "edx", "esi"); if (ax != 0x004f) return -1; Loading Loading
arch/i386/boot/video-vesa.c +21 −13 Original line number Diff line number Diff line Loading @@ -29,7 +29,7 @@ static void vesa_store_mode_params_graphics(void); static int vesa_probe(void) { #if defined(CONFIG_VIDEO_VESA) || defined(CONFIG_FIRMWARE_EDID) u16 ax; u16 ax, cx, di; u16 mode; addr_t mode_ptr; struct mode_info *mi; Loading @@ -39,9 +39,11 @@ static int vesa_probe(void) vginfo.signature = VBE2_MAGIC; /* Optimistically assume a VESA BIOS is register-clean... */ ax = 0x4f00; asm("int $0x10" : "+a" (ax), "=m" (vginfo) : "D" (&vginfo)); di = (size_t)&vginfo; asm(INT10 : "+a" (ax), "+D" (di), "=m" (vginfo) : : "ebx", "ecx", "edx", "esi"); if (ax != 0x004f || vginfo.signature != VESA_MAGIC || Loading @@ -64,9 +66,11 @@ static int vesa_probe(void) memset(&vminfo, 0, sizeof vminfo); /* Just in case... */ ax = 0x4f01; asm("int $0x10" : "+a" (ax), "=m" (vminfo) : "c" (mode), "D" (&vminfo)); cx = mode; di = (size_t)&vminfo; asm(INT10 : "+a" (ax), "+c" (cx), "+D" (di), "=m" (vminfo) : : "ebx", "edx", "esi"); if (ax != 0x004f) continue; Loading Loading @@ -102,16 +106,18 @@ static int vesa_probe(void) static int vesa_set_mode(struct mode_info *mode) { u16 ax; u16 ax, bx, cx, di; int is_graphic; u16 vesa_mode = mode->mode - VIDEO_FIRST_VESA; memset(&vminfo, 0, sizeof vminfo); /* Just in case... */ ax = 0x4f01; asm("int $0x10" : "+a" (ax), "=m" (vminfo) : "c" (vesa_mode), "D" (&vminfo)); cx = vesa_mode; di = (size_t)&vminfo; asm(INT10 : "+a" (ax), "+c" (cx), "+D" (di), "=m" (vminfo) : : "ebx", "edx", "esi"); if (ax != 0x004f) return -1; Loading @@ -129,9 +135,11 @@ static int vesa_set_mode(struct mode_info *mode) ax = 0x4f02; asm volatile("int $0x10" : "+a" (ax) : "b" (vesa_mode), "D" (0)); bx = vesa_mode; di = 0; asm volatile(INT10 : "+a" (ax), "+b" (bx), "+D" (di) : : "ecx", "edx", "esi"); if (ax != 0x004f) return -1; Loading