* grub-core/kern/i386/pc/startup.S (grub_console_getkey): Fix incorrect

handling of special keys.
This commit is contained in:
Vladimir 'phcoder' Serbinenko 2010-10-06 19:46:20 +02:00
parent c7980ad945
commit 74baff844e
2 changed files with 13 additions and 5 deletions

View file

@ -1,3 +1,8 @@
2010-10-09 Vladimir Serbinenko <phcoder@gmail.com>
* grub-core/kern/i386/pc/startup.S (grub_console_getkey): Fix incorrect
handling of special keys.
2010-10-02 Aleš Nesrsta <starous@volny.cz> 2010-10-02 Aleš Nesrsta <starous@volny.cz>
* include/grub/scsi.h (grub_make_scsi_id): Fix incorrect usgae of * include/grub/scsi.h (grub_make_scsi_id): Fix incorrect usgae of

View file

@ -615,6 +615,7 @@ LOCAL(bypass_table_end):
FUNCTION(grub_console_getkey) FUNCTION(grub_console_getkey)
pushl %ebp pushl %ebp
pushl %edi
call prot_to_real call prot_to_real
.code16 .code16
@ -644,15 +645,16 @@ FUNCTION(grub_console_getkey)
jz 1f jz 1f
andl %edx, %eax andl %edx, %eax
cmp %eax, 0x20 cmpl $0x20, %eax
ja 2f ja 2f
movl %edx, %eax movl %edx, %eax
leal LOCAL(bypass_table), %esi leal LOCAL(bypass_table), %edi
movl $((LOCAL(bypass_table_end) - LOCAL(bypass_table)) / 2), %ecx movl $((LOCAL(bypass_table_end) - LOCAL(bypass_table)) / 2), %ecx
repne cmpsw repne scasw
jz 3f jz 3f
addl $('a' - 1 | GRUB_TERM_CTRL), %eax andl $0xff, %eax
addl $(('a' - 1) | GRUB_TERM_CTRL), %eax
jmp 2f jmp 2f
3: 3:
andl $0xff, %eax andl $0xff, %eax
@ -662,6 +664,7 @@ FUNCTION(grub_console_getkey)
shrl $8, %eax shrl $8, %eax
orl $GRUB_TERM_EXTENDED, %eax orl $GRUB_TERM_EXTENDED, %eax
2: 2:
popl %edi
popl %ebp popl %ebp
ret ret