summaryrefslogtreecommitdiff
path: root/memdisk
Commit message (Collapse)AuthorAgeFilesLines
* build: sort sources to build in a more deterministic wayPhilippe Coval2015-01-051-1/+1
| | | | | | | | | | | | | | | | | It has been observed that binaries contents are depending on the order of linked objects. This order is caused by GNU make's wildcard function and the position of sources on filesystem. This change tries to prevent this kind of randomness. Also consider building using -j1 flag to make it even more reproductible. Change-Id: Ie8eee7f336e6f1fa2863c4150d967afd15519f1d Bug: http://bugzilla.syslinux.org/show_bug.cgi?id=57#related Signed-off-by: Philippe Coval <philippe.coval at open.eurogiciel.org>
* com32sys_t inreg shall be zeroified prior intcallErwan Velu2014-01-222-0/+2
| | | | | | | | | | | As per commit f775e740a3a817a4ff5ba26bea99dbfd735456b3, inreg parameters of intcall() shall be zeroified. Having unclean inreg could trigger bad behaviors on some hosts. This patch is about adding memset() calls prior any intcall() : - some intcall didn't had any memset at all - some successive intcall() calls didn't memset inreg in between calls
* mk/embedded.mk: Don't use -mregparm in coreMatt Fleming2013-01-081-1/+1
| | | | | | | | | | | | | | Unfortunately commit 4eb06d95d882 ("mk: Add -fPIC for x86_64 to embedded.mk") left -mregparm enabled when compiling objects in core/, which means that when compiling for i386 those objects are compiled with a different ABI compared with everything else, leading to hangs when booting under 32-bit EFI. We should only enable -mregparm for code that absolutely requires it, such as dos/crt0.S which would need to be re-written to use another ABI. Signed-off-by: Matt Fleming <matt.fleming@intel.com>
* Merge tag 'syslinux-5.00-pre9' into for-hpa/elflink/firmwareMatt Fleming2012-11-051-2/+2
|\ | | | | | | | | | | | | | | | | | | | | This merge also includes the Syslinux-4.06 release. Conflicts: Makefile com32/hdt/Makefile com32/modules/Makefile com32/samples/hello.c mtools/Makefile
| * memdisk: Fix order of sectors/track and bytes/sectorsyslinux-4.06Kenneth J. Davis2012-10-231-2/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Swap order of sectors/track with bytes/sector to match diskette parameter table order (as pointed to by INT 1Eh). References: (additional ones available if necessary) 'System BIOS for IBM PC/XT/AT computers and compatibles' by Phoenix Technologies Ltd. copyright 1987,88,89 3rd printing 1990 ISBN: 0-201-51806-6 pages 61-62 'PC Interrupts' 2nd edition by Ralf Brown & Jim Kyle copyright 1994 1st printing 1993 ISBN: 0-201-62485-0 page 211 Note: this fixes an issue with older FreeDOS kernels that expect this structure to contain valid values. Signed-off-by: Kenneth J. Davis <jeremyd@fdos.org> Signed-off-by: Matt Fleming <matt.fleming@intel.com>
* | Add per-firmware object directory supportMatt Fleming2012-10-162-8/+7
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Now that we have multiple firmware backends it no longer makes sense to write object files to the same directory as their source. A better solution is to write the object files to a per-firmware directory under a top-level object directory. The top-level object directory can be specified on the command-line with the O= variable, e.g. make O=/tmp/obj. If no top-level object directory is specified an 'obj' directory is created in the top-level of the Syslinux source repository. All the existing make targets continue to work as before, however now they apply to all firmware backends, e.g. 'make installer' will build the BIOS, 32-bit EFI and 64-bit EFI installers and place them under $(OBJ)/bios, $(OBJ)/efi32 and $(OBJ)/efi64 respectively. Note unlike every other bit of Syslinux, the gpxe objects are still kept in the src directory, e.g. gpxe/src, since gpxe is only required by the BIOS backend. It is possible to specify a make target for a specific firmware or list of firmware with the following syntax, make [firmware[,firmware]] [target[,target]] To clean the object directory for just the BIOS firmware type, 'make bios clean' To build both the 32-bit and 64-bit EFI installers type, 'make efi32 efi64 installer' Since the Syslinux make infrastructure is now more complex a new file doc/building.txt has been created to explain how to build Syslinux. The top-level Makefile now exports some make variables for use in module Makefiles, - topdir - the top-level source directory of the Syslinux repository, e.g. /usr/src/syslinux - objdir - the top-level object directory for the firmware backend currently being built, e.g. /obj/syslinux/bios - SRC - the source directory in the Syslinux repository for the module currently being built, e.g. /usr/src/syslinux/com32/libupload - OBJ - the object directory for the module currently being built, e.g. /obj/syslinux/bios/com32/libupload Since we're rewriting the Makefile infrastructure anyway it seemed like a good idea to add parallel support. By writing subdirectories as prequisites for make targets the objects in those subdirectories can be built in parallel. Signed-off-by: Matt Fleming <matt.fleming@intel.com>
* | Merge remote-tracking branch 'mfleming/elflink' into for-hpa/elflink/firmwareMatt Fleming2012-07-301-1/+1
|\ \ | |/ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Conflicts: Makefile com32/elflink/ldlinux/adv.c com32/elflink/ldlinux/kernel.c com32/elflink/ldlinux/ldlinux.c com32/include/bitsize/stddef.h com32/include/bitsize/stdint.h com32/include/stdint.h com32/include/sys/module.h com32/include/sys/x86_64/bitops.h com32/include/syslinux/linux.h com32/lib/Makefile com32/lib/sys/ansicon_write.c com32/lib/sys/module/elfutils.h com32/lib/sys/vesa/efi/fill.h com32/lib/syslinux/load_linux.c com32/lib/syslinux/serial.c com32/lib/syslinux/shuffle.c core/conio.c core/elflink/config.c core/elflink/load_env32.c core/graphics.c core/include/graphics.h core/init.c core/pxelinux.asm mk/elf.mk mk/lib.mk
| * Makefile: Use -Ox option to NASMH. Peter Anvin2012-03-261-1/+1
| | | | | | | | | | | | | | We already require a new enough version of NASM that the -Ox option is supported, so just use it. Signed-off-by: H. Peter Anvin <hpa@linux.intel.com>
* | This patch implements architecture-dependent code in memdisk to support for ↵chandramouli narayanan2012-06-256-0/+110
| | | | | | | | | | | | | | | | i386 and x86_64. The memcpy, memset and memmove routines originated from klibc. Remanants of the unused old i386-only files, if any, need to be pruned.
* | The make files have undergone changes to support both i386 and x86_64 platforms.chandramouli narayanan2012-06-251-1/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Pertinent changes are sprinkled through *.mk and Makefile in the syslinux tree. Build architecture is specified at the command line via ARCH macro. This is to enable whether one is building for the native platform or cross-building for a different architecture. Currently, the only supported architectures via ARCH macro are i386 and x86_64. There are some modules (e.g. memdump) that don't build under the EFI environment. To go forward with efi boot support, a separate EFI_BUILD=1 macro has been added and is required to be specified while building. This is a temporary solution for the current build environment. example build: On a x86_64 platform, the following cross-builds syslinux for i386 To build for i386: make EFI_BUILD=1 ARCH=i386 On a x86_64 platform, the following builds syslinux for x86_64 To build natively: make EFI_BUILD=1 Changes specific to GCC and LD options: Architecture specific flags and include/search directories are set up for GCC and LD commands. Internally, GCC options such as stack-boundary, PIC and machine architecture are set up based on ARCH macro. While stack-boundary=2 is fine for i386, it does not work for x86_64 and so it is left to the default value. Using -fPIE with gcc does not work with ld on x86_64, but -fPIC works fine. Similarly, target and elf options are set up for linking as approrpriate for architecture. Assumption about gnu-efi install path: Since the EFI build supports both EFI32 and EFI64, the following assumptions are made with regard to the installed location of gnu-efi on the build platform. 1. gnu-efi-ia32: assumed installed in /usr/local [ EFI-32 include files in /usr/local/include/efi and gnu-efi library in /usr/local/lib/ ] 2. gnu-efi-x86_64: assumed installed in /usr [ EFI-64 include files in /usr/include/efi and gnu-efi library in /usr/lib64/ ] Remanants of the unused old i386-only files, if any, need to be pruned.
* | This is a giant patch that splits the linker scripts for libraries, modules ↵chandramouli narayanan2012-06-252-0/+280
|/ | | | | | | | | | | | | | | | | | and executables into the architecture-dependent scripts to facilitate building syslinux modules/executables for i386 and x86_64 environments. The x86_64 linker scripts are derived from the earlier i386 counterparts. Subdirectories i386 and x86_64 hold the respective linker scripts mentioned below. com32/lib/sylinux.ld com32/lib/elf.ld core/syslinux.ld efi/syslinux.ld mbr/mbr.ld memdisk/memdisk.ld Remanants of the unused old i386-only files, if any, need to be pruned.
* Makefile: Move Makefile fragments into mk/Matt Fleming2011-04-071-1/+2
| | | | | | | | | | | | | | | | | | Move the MCONFIG files into a mk/ directory and give them more descriptive names. This is purely a cosmetic change to make the 'include' directives a bit more coherent by making it obvious exactly which MCONFIG file we're including. For example, in com32/lua/src/Makefile we exchange the line, include ../../MCONFIG for the much more comprehensible, include $(MAKEDIR)/com32.mk Signed-off-by: Matt Fleming <matt.fleming@linux.intel.com>
* Merge remote-tracking branch 'genec/memdiskdbg-for-sha0'syslinux-4.04-pre17H. Peter Anvin2011-04-011-7/+54
|\
| * memdisk/dskprobe.c: Add status check to probes 08h and 41hGene Cumm2011-04-011-0/+2
| | | | | | | | | | | | If this fails, the machine should never be working. Signed-off-by: Gene Cumm <gene.cumm@gmail.com>
| * memdisk/dskprobe: Align all INT13h probe debug outputGene Cumm2011-01-301-3/+3
| |
| * memdisk/dskprobe: reorder the debug output in probe_int13h_41h to matchGene Cumm2011-01-261-2/+2
| | | | | | | | BX was listed before AH
| * memdisk/dskprobe: Be consistent in debug outputGene Cumm2011-01-261-0/+4
| | | | | | | | Only probe_int13h_15h() showed the AH01h output; show it in the others also
| * memdisk/dskprobe: Reorder operations to compact the debug outputGene Cumm2011-01-261-8/+13
| | | | | | | | | | By listing current regs, evaluate present, then display present last, it allows it to conveniently use only 1 output line.
| * memdisk/dskprobe: Code cleanupGene Cumm2011-01-261-2/+1
| |
| * memdisk/dskprobe: Use status of last command to affect presentGene Cumm2011-01-261-3/+2
| |
| * memdisk/dskprobe: Show the status of the last command when debuggingGene Cumm2011-01-261-0/+35
| | | | | | | | | | | | | | INT13h AH01h is supposed to show the status of the last command. Show its status and determine if it's a known failure. This does not affect the "present" variable at this time.
| * memdisk/dskprobe: Increase the debug outputGene Cumm2011-01-261-5/+8
| | | | | | | | | | Include all registers that should include anything of value and display the value of the "present" variable.
| * memdisk/dskprobe.c: Additional checks in INT13h AH08h and AH41hShao Miller2011-01-261-2/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Some BIOSs lie and don't set CF when they should. Additional comments from Shao: Fix INT 0x13, AH==0x08 disk drive probe. This function might return CF==0 ("success"), but could return a standard response no matter which drive number is passed in DL, but based only on DL's bit 7. Fortunately, AH should be 0 for an existent drive and 01h for a non-existent drive. Now we check AH. Fix INT 0x13, AH==0x41 disk drive probe This function might return CF==0 ("success"), but could also include BX left unchanged. If extensions are present, BX should be returned with 0xAA55. So we now check for this special value in our determination of a drive's presence. Signed-off-by: Gene Cumm <gene.cumm@gmail.com>
* | memdisk: make sure the disk type is actually setH. Peter Anvin2011-03-161-2/+6
| | | | | | | | | | | | Make sure we actually set the disk CMOS type. Signed-off-by: H. Peter Anvin <hpa@zytor.com>
* | memdisk/setup: Rename int15maxres to setmaxmemGene Cumm2011-02-081-5/+5
| | | | | | | | | | | | | | The old name was intended as a test to prevent collision. New name seems more logical and appropriate. By reusing the mem= parameter and adjusting all of the memory calls that MEMDISK replaces through the use of insertrange(), there's nothing better that we can do.
* | memdisk: Fix CSRC in MakefileGene Cumm2011-02-081-2/+1
| |
* | memdisk & libcom32: Fix minor errors in previous commitGene Cumm2011-02-082-2/+2
| |
* | memdisk: Undo addition of vpath and removal of tiny filesGene Cumm2011-02-086-2/+5
| |
* | memdisk: remove unnecessary files; add vpath instead; add files to CSRCGene Cumm2011-02-086-6/+5
| | | | | | | | | | | | This removes the need to have these tiny files around. This also changes it to be relative to $(topdir), allowing for memdisk to be moved if needed in the future.
* | memdisk/setup: Allow suffix processing on mem= parameterGene Cumm2011-02-073-4/+13
| |
* | memdisk: Add strtoull from libcom32 by #includeGene Cumm2011-02-075-0/+5
| |
* | memdisk/setup: remove unneeded code associated with int15maxresGene Cumm2011-02-061-13/+0
| |
* | memdisk/setup: int15maxres: Use 1 const; comment out printf()Gene Cumm2011-02-061-4/+5
| |
* | memdisk/setup: Change int15maxres to parse memory range linesGene Cumm2011-02-061-7/+12
| | | | | | | | Only touch the ranges that are type 1 (available)
* | memdisk/setup: change option to memGene Cumm2011-02-061-1/+1
| |
* | memdisk/setup: Move duplicate code in int15maxres to new functionGene Cumm2011-02-061-15/+13
| |
* | memdisk: New parameter (int15maxres) for specifying maximum RAMGene Cumm2011-02-051-0/+38
|/ | | | | | Add a new parameter, int15maxres, for specifying (in decimal bytes) the maximum amount of free RAM that different calls will return. The RAM is tagged in INT15h AXe820h as reserved in order to satisfy this.
* memdisk: Fix INT 0x13, AH==0x15 disk drive probeShao Miller2011-01-251-1/+1
| | | | | | | | The function might return CF==0 ("success"), but could include AH==0 ("no such drive"). This is the case on at least a number of Dell models. Now we check AH, too. Signed-off-by: Shao Miller <shao.miller@yrdsb.edu.on.ca>
* memdisk: Enhance disk-probe debugging outputShao Miller2011-01-251-20/+77
| | | | | | | | | | In an effort to trouble-shoot a problem report on some Dell models (including an Optiplex GX260), we add further debugging output to try to find out at which point things go wrong. The problem units are apparently probing as "drive present" for all drives, which obviously isn't right. Signed-off-by: Shao Miller <shao.miller@yrdsb.edu.on.ca>
* memdisk: Make debug-mode a tad prettierShao Miller2011-01-241-12/+22
| | | | | | By removing the use of #ifdef-#endif blocks. Signed-off-by: Shao Miller <shao.miller@yrdsb.edu.on.ca>
* memdisk: use char array for external symbolsH. Peter Anvin2010-11-141-3/+3
| | | | | | | Use "extern const char foo[];" for an external symbol rather than "extern void" (gcc 4.5 fix.) Signed-off-by: H. Peter Anvin <hpa@zytor.com>
* memdisk: add a sector_shift field to the MDI; fix memdiskfindH. Peter Anvin2010-06-222-11/+12
| | | | | | | Add a sector_shift field to the MDI rather than assuming 512-byte sectors. Fix memdiskfind to report size in bytes, not in sectors. Signed-off-by: H. Peter Anvin <hpa@linux.intel.com>
* memdisk: make mstructs.h includable from LinuxH. Peter Anvin2010-06-216-23/+23
| | | | | | Make mstructs.h includable from a Linux utility. Signed-off-by: H. Peter Anvin <hpa@linux.intel.com>
* memdisk: Correct El Torito termination responseShao Miller2010-06-151-1/+6
| | | | | | | | | | | | Two changes to the INT 0x13, AH=0x7B El Torito function: 1. Support the DL=0x7F "terminate all" parameter 2. Only respond to DL=0x7F or DL=our particular emulated drive number This prevents tools like Bart Lagerweij's El Torito tools from receiving false positives when probing all drive numbers. Signed-off-by: Shao Miller <shao.miller@yrdsb.edu.on.ca>
* Merge remote branch 'sha0/mdiskchk_enh2' into pathbasedH. Peter Anvin2010-06-176-180/+245
|\
| * memdisk: Force 32-bit mBFT "safe hook" pointer fieldShao Miller2010-06-112-2/+5
| | | | | | | | | | | | | | | | | | | | | | | | | | | | When mstructs.h is used by MDISKCHK.COM, pointers have a 16-bit size and thus the mBFT structure sizeof() is smaller under OpenWatcom. We now union this pointer member with a uint32_t to force the field to at least 32 bits. There is another pointer in this header file which is already unioned with a uint32_t, due to that field's dual-purpose. That field is fine under OpenWatcom. Signed-off-by: Shao Miller <shao.miller@yrdsb.edu.on.ca>
| * memdisk: Move dpt_t into common structures headerShao Miller2010-06-112-33/+33
| | | | | | | | | | | | | | This needs to be in here in order for the header file to be useful to any C file other than setup.c. Signed-off-by: Shao Miller <shao.miller@yrdsb.edu.on.ca>
| * memdisk: mBFT includes the MDIShao Miller2010-06-111-12/+13
| | | | | | | | | | | | | | | | Instead of padding the mBFT so its size is correct, we actually put the MDI struct in there, since the last commit provided it. Signed-off-by: Shao Miller <shao.miller@yrdsb.edu.on.ca>
| * memdisk: Change patch area to include the entire MDIShao Miller2010-06-113-21/+33
| | | | | | | | | | | | | | | | | | | | | | Previously, the patch area began after the beginning of the MDI, but continued past its end. This is difficult to express with C structures, so we've simply changed the patch area to include the entire MDI. So it now includes the MDI size and MEMDISK version info, which we simply make constant to avoid modifying. Signed-off-by: Shao Miller <shao.miller@yrdsb.edu.on.ca>
| * memdisk: Use MEMDISK header to access "safe hook"Shao Miller2010-06-112-23/+22
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This commit moves the MEMDISK header structure into the common structures header file. It also adds the "safe hook" structure to the MEMDISK header structure, since that matches what's in the hook binaries. Thus, we access the "safe hook" via the header pointer, instead of separately. Tested against a DOS floppy image including an experimental MDISKCHK.COM and also gainst WinVBlock. Signed-off-by: Shao Miller <shao.miller@yrdsb.edu.on.ca>