summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorH. Peter Anvin <hpa@zytor.com>2006-10-17 15:04:55 -0700
committerH. Peter Anvin <hpa@zytor.com>2006-10-17 15:04:55 -0700
commit64561c906a556698af3dfcaf35a4596700faf088 (patch)
tree7538aaa8e37efc3dcc2d3becfd25ac96a91277c6
parentc0480f52bec399fc81bd9104c88de30cfdd32276 (diff)
parent72677e475f8f292c4d2c83e7a6c9fccb66993dc9 (diff)
downloadsyslinux-64561c906a556698af3dfcaf35a4596700faf088.tar.gz
Merge with git+ssh://master.kernel.org/pub/scm/boot/syslinux/syslinux.git#syslinux-3.3x
-rw-r--r--Makefile.private17
-rw-r--r--NEWS3
-rw-r--r--com32/lib/Makefile4
-rw-r--r--com32/lib/sys/vesa/initvesa.c18
-rw-r--r--keywords1
-rw-r--r--keywords.inc69
-rw-r--r--parseconfig.inc25
-rw-r--r--version2
8 files changed, 92 insertions, 47 deletions
diff --git a/Makefile.private b/Makefile.private
index 114d0860..ddbf75b0 100644
--- a/Makefile.private
+++ b/Makefile.private
@@ -35,9 +35,10 @@ burn: isolinux.iso
cdrecord -v blank=fast isolinux.iso
official:
- $(MAKE) spotless
- $(MAKE) all DATE=`date +'%Y-%m-%d'`
- $(MAKE) dist
+ $(MAKE) spotless CC='$(CC) -m32'
+ $(MAKE) depend CC='$(CC) -m32'
+ $(MAKE) all CC='$(CC) -m32'
+ $(MAKE) dist CC='$(CC) -m32'
release:
test -d release
@@ -53,9 +54,8 @@ release:
< release/syslinux-$(VERSION)/syslinux.spec.in \
> release/syslinux-$(VERSION)/syslinux.spec
rm -f release/syslinux-$(VERSION)/syslinux.spec.in
- $(MAKE) -C release/syslinux-$(VERSION) spotless
- $(MAKE) -C release/syslinux-$(VERSION) depend
- $(MAKE) -C release/syslinux-$(VERSION) official
+ $(MAKE) -C release/syslinux-$(VERSION) official DATE=`date +%Y-%m-%d`
+
cd release/syslinux-$(VERSION) && rm -rf $(PRIVATE)
cd release && tar cvvf - syslinux-$(VERSION) | \
gzip -9 > syslinux-$(VERSION).tar.gz
@@ -84,10 +84,7 @@ prerel:
< $(PRERELDIR)/$(PREREL)/syslinux.spec.in \
> $(PRERELDIR)/$(PREREL)/syslinux.spec
rm -f $(PRERELDIR)/$(PREREL)/syslinux.spec.in
- $(MAKE) -C $(PRERELDIR)/$(PREREL) spotless
- $(MAKE) -C $(PRERELDIR)/$(PREREL) depend
- $(MAKE) -C $(PRERELDIR)/$(PREREL) all DATE=`printf '%s-pre%d ' $(VERSION) $(PRERELNO) | dd bs=10 count=1 2>/dev/null`
- $(MAKE) -C $(PRERELDIR)/$(PREREL) dist
+ $(MAKE) -C $(PRERELDIR)/$(PREREL) official DATE=`printf '%s-pre%d ' $(VERSION) $(PRERELNO) | dd bs=10 count=1 2>/dev/null`
cd $(PRERELDIR)/$(PREREL) && rm -rf $(PRIVATE)
cd $(PRERELDIR) && tar cvvf - $(PREREL) | \
gzip -9 > $(PREREL).tar.gz
diff --git a/NEWS b/NEWS
index d8a8a643..e04389a0 100644
--- a/NEWS
+++ b/NEWS
@@ -2,6 +2,9 @@ Starting with 1.47, changes marked with SYSLINUX/PXELINUX/ISOLINUX
apply to that specific program only; other changes apply to all of
them.
+Changes in 3.32:
+ * MEMDISK: New "safeint" mode.
+
Changes in 3.31:
* The simple menu system (menu.c32 and vesamenu.c32) now
support loading more than one configuration file at a time,
diff --git a/com32/lib/Makefile b/com32/lib/Makefile
index a6355c9f..1bbfadeb 100644
--- a/com32/lib/Makefile
+++ b/com32/lib/Makefile
@@ -78,7 +78,9 @@ libcom32.a : $(LIBOBJS)
$(RANLIB) $@
tidy:
- rm -f *.o .*.d */*.o */.*.d sys/vesa/alphatbl.c
+ rm -f sys/vesa/alphatbl.c
+ find . -name \*.o -print | xargs -r rm -f
+ find . -name .\*.d -print | xargs -r rm -f
clean: tidy
rm -f *.a
diff --git a/com32/lib/sys/vesa/initvesa.c b/com32/lib/sys/vesa/initvesa.c
index 35084449..febb5804 100644
--- a/com32/lib/sys/vesa/initvesa.c
+++ b/com32/lib/sys/vesa/initvesa.c
@@ -105,6 +105,7 @@ static int vesacon_set_mode(void)
debug("Hello, World!\r\n");
memset(&rm, 0, sizeof rm);
+ memset(gi, 0, sizeof *gi);
gi->signature = VBE2_MAGIC; /* Get VBE2 extended data */
rm.eax.w[0] = 0x4F00; /* Get SVGA general information */
@@ -116,9 +117,13 @@ static int vesacon_set_mode(void)
return 1; /* Function call failed */
if ( gi->signature != VESA_MAGIC )
return 2; /* No magic */
+#if 1
+ /* Linear frame buffer is a VBE 2.0 feature. In theory this
+ test is redundant given that we check the bitmasks. */
if ( gi->version < 0x0200 ) {
return 3; /* VESA 2.0 not supported */
}
+#endif
/* Copy general info */
memcpy(&__vesa_info.gi, gi, sizeof *gi);
@@ -131,6 +136,7 @@ static int vesacon_set_mode(void)
while ((mode = *mode_ptr++) != 0xFFFF) {
debug("Found mode: 0x%04x\r\n", mode);
+ memset(mi, 0, sizeof *mi);
rm.eax.w[0] = 0x4F01; /* Get SVGA mode information */
rm.ecx.w[0] = mode;
rm.edi.w[0] = OFFS(mi);
@@ -145,8 +151,16 @@ static int vesacon_set_mode(void)
mi->mode_attr, mi->h_res, mi->v_res, mi->bpp, mi->memory_layout,
mi->rpos, mi->gpos, mi->bpos);
- /* Must be an LFB color graphics mode supported by the hardware */
- if ( (mi->mode_attr & 0x0099) != 0x0099 )
+ /* Must be an LFB color graphics mode supported by the hardware.
+
+ The bits tested are:
+ 7 - linear frame buffer available
+ 4 - graphics mode
+ 3 - color mode
+ 1 - mode information available (mandatory in VBE 1.2+)
+ 0 - mode supported by hardware
+ */
+ if ( (mi->mode_attr & 0x009b) != 0x009b )
continue;
/* Must be 640x480, 32 bpp */
diff --git a/keywords b/keywords
index bfcbc2a4..39a871c0 100644
--- a/keywords
+++ b/keywords
@@ -1,4 +1,5 @@
menu
+text
append
default
display
diff --git a/keywords.inc b/keywords.inc
index cffe6a75..811d5bd8 100644
--- a/keywords.inc
+++ b/keywords.inc
@@ -1,6 +1,6 @@
;; -----------------------------------------------------------------------
;;
-;; Copyright 1994-2002 H. Peter Anvin - All Rights Reserved
+;; Copyright 1994-2006 H. Peter Anvin - All Rights Reserved
;;
;; This program is free software; you can redistribute it and/or modify
;; it under the terms of the GNU General Public License as published by
@@ -42,42 +42,45 @@ keywd_size equ 8 ; Bytes per keyword
align 4, db 0
+%define FKeyN(n) (FKeyName+(((n)-1) << FILENAME_MAX_LG2))
+
keywd_table:
- keyword menu, pc_comment
- keyword append, pc_append
- keyword default, pc_default
- keyword display, pc_filecmd, get_msg_file
- keyword font, pc_filecmd, loadfont
- keyword implicit, pc_setint16, AllowImplicit
- keyword kbdmap, pc_filecmd, loadkeys
- keyword kernel, pc_kernel
- keyword label, pc_label
- keyword prompt, pc_setint16, ForcePrompt
- keyword say, pc_say
- keyword serial, pc_serial
- keyword console, pc_setint16, DisplayCon
- keyword timeout, pc_timeout, KbdTimeout
- keyword totaltimeout, pc_timeout, TotalTimeout
- keyword ontimeout, pc_ontimeout
- keyword onerror, pc_onerror
- keyword allowoptions, pc_setint16, AllowOptions
- keyword noescape, pc_setint16, NoEscape
- keyword f1, pc_fkey, FKeyName+(0<<FILENAME_MAX_LG2)
- keyword f2, pc_fkey, FKeyName+(1<<FILENAME_MAX_LG2)
- keyword f3, pc_fkey, FKeyName+(2<<FILENAME_MAX_LG2)
- keyword f4, pc_fkey, FKeyName+(3<<FILENAME_MAX_LG2)
- keyword f5, pc_fkey, FKeyName+(4<<FILENAME_MAX_LG2)
- keyword f6, pc_fkey, FKeyName+(5<<FILENAME_MAX_LG2)
- keyword f7, pc_fkey, FKeyName+(6<<FILENAME_MAX_LG2)
- keyword f8, pc_fkey, FKeyName+(7<<FILENAME_MAX_LG2)
- keyword f9, pc_fkey, FKeyName+(8<<FILENAME_MAX_LG2)
- keyword f10, pc_fkey, FKeyName+(9<<FILENAME_MAX_LG2)
- keyword f0, pc_fkey, FKeyName+(9<<FILENAME_MAX_LG2)
+ keyword menu, pc_comment
+ keyword text, pc_text
+ keyword append, pc_append
+ keyword default, pc_default
+ keyword display, pc_filecmd, get_msg_file
+ keyword font, pc_filecmd, loadfont
+ keyword implicit, pc_setint16, AllowImplicit
+ keyword kbdmap, pc_filecmd, loadkeys
+ keyword kernel, pc_kernel
+ keyword label, pc_label
+ keyword prompt, pc_setint16, ForcePrompt
+ keyword say, pc_say
+ keyword serial, pc_serial
+ keyword console, pc_setint16, DisplayCon
+ keyword timeout, pc_timeout, KbdTimeout
+ keyword totaltimeout, pc_timeout, TotalTimeout
+ keyword ontimeout, pc_ontimeout
+ keyword onerror, pc_onerror
+ keyword allowoptions, pc_setint16, AllowOptions
+ keyword noescape, pc_setint16, NoEscape
+ keyword f1, pc_fkey, FKeyN(1)
+ keyword f2, pc_fkey, FKeyN(2)
+ keyword f3, pc_fkey, FKeyN(3)
+ keyword f4, pc_fkey, FKeyN(4)
+ keyword f5, pc_fkey, FKeyN(5)
+ keyword f6, pc_fkey, FKeyN(6)
+ keyword f7, pc_fkey, FKeyN(7)
+ keyword f8, pc_fkey, FKeyN(8)
+ keyword f9, pc_fkey, FKeyN(9)
+ keyword f10, pc_fkey, FKeyN(10)
+ keyword f0, pc_fkey, FKeyN(10)
%if IS_PXELINUX
- keyword ipappend, pc_ipappend
+ keyword ipappend, pc_ipappend
%endif
%if IS_PXELINUX || IS_ISOLINUX
- keyword localboot, pc_localboot
+ keyword localboot, pc_localboot
%endif
keywd_count equ ($-keywd_table)/keywd_size
diff --git a/parseconfig.inc b/parseconfig.inc
index aef31613..de64a18f 100644
--- a/parseconfig.inc
+++ b/parseconfig.inc
@@ -306,6 +306,31 @@ pc_say: call pc_getline ; "say" command
jmp crlf ; tailcall
;
+; "text" command; ignore everything until we get an "endtext" line
+;
+pc_text: call pc_getline ; Ignore rest of line
+.loop:
+ call pc_getline
+.skipspace:
+ lodsb
+ and al,al
+ jz .loop
+ cmp al,' '
+ jbe .skipspace
+
+ dec si
+ lodsd
+ and eax,0xfdfdfdfd
+ cmp eax,'ENDT'
+ jne .loop
+ lodsd
+ and eax,0x00fdfdfd
+ cmp eax,'EXT'
+ jne .loop
+ ; If we get here we hit ENDTEXT
+ ret
+
+;
; Comment line
;
pc_comment: ; Fall into pc_getline
diff --git a/version b/version
index f606beb1..269e1a69 100644
--- a/version
+++ b/version
@@ -1 +1 @@
-3.31
+3.32