search for: __intcall

Displaying 20 results from an estimated 50 matches for "__intcall".

Did you mean: __initcall
2014 Feb 20
2
[PATCH] core: Incorrect detection of EDD in /core/fs/diskio_bios.c
...00 +0400 +++ syslinux-6.02/core/fs/diskio_bios.c 2014-02-20 12:15:08.000000000 +0400 @@ -337,7 +337,7 @@ struct disk *bios_disk_init(void *privat /* Get EBIOS support */ ireg.eax.b[1] = 0x41; ireg.ebx.w[0] = 0x55aa; - ireg.eflags.b[0] = 0x3; /* CF set */ + ireg.edx.b[0] = devno; __intcall(0x13,&ireg,&oreg); @@ -353,6 +353,7 @@ struct disk *bios_disk_init(void *privat edd_params.len = sizeof edd_params; ireg.eax.b[1] = 0x48; + ireg.edx.b[0] = devno; ireg.ds = SEG(&edd_params); ireg.esi.w[0] = OFFS(&edd_params); __intc...
2012 Jul 16
5
[PATCH 0/5] Deleting __intcall() from Syslinux
From: Matt Fleming <matt.fleming at intel.com> Since we can't use __intcall() for EFI, and since we can now have the ELF module code resolve all our symbols at runtime, we should delete as many references to __intcall() as possible and just access the symbols directly. The most interesting patch is the support for weak symbols. We need to be able to reference derivative-s...
2005 Sep 17
2
com16/com32 module for APM powerdown
...int flags; int version; openconsole(&dev_null_r, &dev_stdcon_w); printf("APM/ACPI Off\nCopyright (C) 1999,2005 Luciano Rocha.\n"); /* clear input registers */ memset(&in, '\0', sizeof in); /* check APM support and version */ in.eax.w[0] = 0x5300; __intcall(0x15, &in, &out); /* version in ax, bx must be equal to "PM" */ if (out.eflags.l & EFLAGS_CF || out.ebx.w[0] != 0x504d) { printf("APM not detected.\n"); return 1; } printf("APM BIOS Version %x.%x found.\n", out.eax.b[1], out.eax.b[0]);...
2012 Aug 14
1
[GIT PULL] elflink fixes
Hi Peter, The main part of this pull request includes commits that try to replace as many __intcall() invocations as possible. Some remain, but not many (and eventually they'll be gone too). There's also a patch to make better use of ld's --as-needed option and various other bug fixes/cleanups. The following changes since commit ff7334a2ce536b7f4b1f6d6f93ff4e285a3bd45a: Only compi...
2019 Jan 21
2
A bug in command localboot was introduced in version 6.03.
diff --git a/core/localboot.c b/core/localboot.c index 0b8769e4..30bfb272 100644 --- a/core/localboot.c +++ b/core/localboot.c @@ -63,7 +63,6 @@ __export void local_boot(int16_t ax) ireg.eax.w[0] = 0; /* Reset drive */ __intcall(0x13, &ireg, NULL); - memset(&ireg, 0, sizeof(ireg)); ireg.eax.w[0] = 0x0201; /* Read one sector */ ireg.ecx.w[0] = 0x0001; /* C/H/S = 0/0/1 (first sector) */ ireg.ebx.w[0] = OFFS(trackbuf); 21.01.2019 11:03, Erwan Velu writes: > Can you share the patch you used ? >
2007 Jan 06
6
PXE stack access via com32
...what I'm trying to do is send (possibly receive) UDP packets via the PXE stack using the com32 API (using version 3.11 of syslinux). I have followed both the comboot API doc and the aforementioned thread; however they disagree on which registers are used for which bits of data in the setup for __intcall(). According to the comboot doc, to call the PXE stack's 'get cached info' function: Input: AX 0009h BX PXE function number ES:DI PXE data buffer Output: AX PXE return status code or, in com32 terms (the PXE call argument struct has been copied into the bou...
2006 Oct 29
1
The simple menu system doesn't work with serial console
...*** com32/lib/sys/xserial_write.c~ 2006-10-30 08:30:35.000000000 +0900 --- com32/lib/sys/xserial_write.c 2006-10-30 08:31:30.000000000 +0900 *************** *** 43,49 **** { static com32sys_t ireg; /* Zeroed with the BSS */ ! ireg.eax.w[0] = 0x0400 | (unsigned char)ch; __intcall(0x21, &ireg, NULL); } --- 43,50 ---- { static com32sys_t ireg; /* Zeroed with the BSS */ ! ireg.eax.b[1] = 0x04; ! ireg.edx.b[0] = ch; __intcall(0x21, &ireg, NULL); } -- HIRANO Takahito hiranotaka%zng.info
2014 Feb 23
1
[PATCH] core: Incorrect detection of EDD in /core/fs/diskio_bios.c
...ux-6.02/core/fs/diskio_bios.c 2014-02-23 14:04:17.876084866 -0500 @@ -337,6 +337,7 @@ struct disk *bios_disk_init(void *privat /* Get EBIOS support */ ireg.eax.b[1] = 0x41; ireg.ebx.w[0] = 0x55aa; + ireg.edx.b[0] = devno; ireg.eflags.b[0] = 0x3; /* CF set */ __intcall(0x13, &ireg, &oreg); @@ -353,6 +354,7 @@ struct disk *bios_disk_init(void *privat edd_params.len = sizeof edd_params; ireg.eax.b[1] = 0x48; + ireg.edx.b[0] = devno; ireg.ds = SEG(&edd_params); ireg.esi.w[0] = OFFS(&edd_params);...
2013 Feb 10
4
[PATCH] poweroff COM32 module
...poweroff module + */ + +#include <stdio.h> +#include <string.h> +#include <com32.h> + +int main() +{ + com32sys_t inregs, outregs; + + memset(&inregs, 0, sizeof inregs); + + inregs.eax.l = 0x5300; /* APM Installation Check (00h) */ + inregs.ebx.l = 0; /* APM BIOS (0000h) */ + __intcall(0x15, &inregs, &outregs); + + if (outregs.eflags.l & EFLAGS_CF) { + printf("APM not present.\n"); + return 1; + } + + if ((outregs.ebx.l & 0xffff) != 0x504d) { /* signature 'PM' */ + printf("APM not present.\n"); + return 1; + } + + if ((outregs.eax.l...
2008 Jan 02
3
inconsistent Int 22h local boot
I have a Dell 1435 system that will not respond correctly to a com32 call to Local boot Int 22h AX=14h DX = 0 This call should not return. It should unload the PXE+UNDI stacks and continue the boot process with the next boot device. This call is working fine for me on an HP DL360G2 and on a Dell PE 850. But, on this Dell 1435 the call is returning from the Int 22h. I am using syslinux 3.51
2007 Feb 12
4
Read disk not working in 3.35+
...XXX MARK 1 for (i=0; i< 10; i++) { int j; memset(&regs_in, 0, sizeof regs_in); regs_in.eax.l = 0x0019; regs_in.edx.l = i; // sector number regs_in.ecx.l = 1; // sector count regs_in.es = SEG(sectorBuf); regs_in.ebx.w[0] = OFFS(sectorBuf); __intcall(0x22, &regs_in, NULL); printf("%d: ", i); for (j =0; j < 512; j++) { if (sectorBuf[j] != 0) printf("%x", sectorBuf[j]); } printf(" .\n"); } } This should print something if non-null data is encountered, but i see just a "....
2012 Jun 26
2
[GIT PULL] elflink bug fixes
...bounce = lmalloc(strlen(cmd) + 1); + if (!bounce) + return; + + strcpy(bounce, cmd); REG_AX(inreg) = 0x0003; // Run command - REG_BX(inreg) = OFFS(__com32.cs_bounce); - REG_ES(inreg) = SEG(__com32.cs_bounce); + REG_BX(inreg) = OFFS(bounce); + REG_ES(inreg) = SEG(bounce); __intcall(0x22, &inreg, &outreg); } @@ -62,6 +68,7 @@ void runsyslinuximage(const char *cmd, long ipappend) { unsigned int numfun = 0; char *ptr, *cmdline; + char *bounce; (void)ipappend; // XXX: Unused?! @@ -71,8 +78,12 @@ void runsyslinuximage(const char *cmd, long ipappe...
2008 Jul 19
0
[PATCH] ethersel: use library functions
...h> #include <com32.h> +#include <syslinux/boot.h> +#include <syslinux/config.h> #ifdef DEBUG # define dprintf printf @@ -42,17 +44,6 @@ # define dprintf(...) ((void)0) #endif -static const char * -get_config(void) -{ - static com32sys_t r; - - r.eax.w[0] = 0x000E; - __intcall(0x22, &r, &r); - - return MK_PTR(r.es, r.ebx.w[0]); -} - static char * skipspace(char *p) { @@ -139,7 +130,7 @@ struct match *m; if ( !filename ) - filename = get_config(); + filename = syslinux_config_file(); f = fopen(filename, "r"); if ( !f ) @@ -198,1...
2007 Sep 20
2
com32 -> localboot problem
...ytem will boot properly. I would like foo.c32 to localboot. I am using the following code to try to localboot: void syslinux_localboot(int localboottype) { static com32sys_t regs; memset(&regs, 0, sizeof regs); regs.eax.w[0] = 0x0014; regs.edx.w[0] = (unsigned short) localboottype; __intcall(0x22, &regs, NULL); printf("Why did I come back?\n"); syslinux_sleep(5); exit(0); } I am observing that it returns from the __intcall and prints out my "Why did I come back?" message. I have played with this a couple of times over the last few weeks but have not figur...
2013 Feb 06
1
Syslinux-5.01 cmd.c32 broken: __com32 undefined
Rather than acting like a typical C program using argc/argv, cmd.c32 uses __com32.cs_cmdline to retrieve what's passed to it. meminfo.c32 uses __intcall() which in the library calls __com32.cs_intcall(). Is __com32 only exposed for library functions or is there something else missing in here? Should accessing __com32.cs_cmdline be abstracted via a function call for protection? Should cmd.c32 use argc/argv instead? If we were to abstract/protect...
2014 Feb 22
0
[PATCH] core: Incorrect detection of EDD in /core/fs/diskio_bios.c
...ort */ > ireg.eax.b[1] = 0x41; > ireg.ebx.w[0] = 0x55aa; > - ireg.eflags.b[0] = 0x3; /* CF set */ I don't understand where the removal of that line matches with 'DL register is not set' from the description of this patch. > + ireg.edx.b[0] = devno; > > __intcall(0x13,&ireg,&oreg); > > @@ -353,6 +353,7 @@ struct disk *bios_disk_init(void *privat > edd_params.len = sizeof edd_params; > > ireg.eax.b[1] = 0x48; > + ireg.edx.b[0] = devno; > ireg.ds = SEG(&edd_params); > ireg.esi.w[0] = O...
2009 May 24
1
Sending UDP packets from comboot
...args.buffer = <some stuff to put my data in> memcpy(__com32.cs_bounce, &args, sizeof(args); inputRegs.es = SEG(__com32.cs_bounce); inputRegs.edi.w[0] = OFFS(__com32.cs_bounce); inputRegs.eax.w[0] = 0x0009; /* call PXE stack */ inputRegs.ebx.w[0] = 0x0033; /* PXENV_UDP_WRITE opcode */ __intcall(0x22, &inputRegs, NULL); // code end Could anyone give me a hand on that? Or is there any example already where a UDP write is used? Thanks in advance, -Stefan
2007 Jan 25
5
Custom com32
Hi all I've written a basic COM32 module that checks (using the DMI example code) the product and BIOS and if the BIOS is not at the required level, is supposed to exit and boot using a DOS floppy image to flash the BIOS. The problem is that I can't work out how to call the DOS floppy image. Looking at the website, I see "Run Command" AX=0003H via int 22. The image name will
2013 Sep 17
2
[PATCH 1/4 v2] com32/lib/: Avoid unneeded allocation.
eparam would only be used if EBIOS is available. If it is not, then there is no reason to allocate eparam. Signed-off-by: Raphael S.Carvalho <raphael.scarv at gmail.com> --- com32/lib/syslinux/disk.c | 10 +++++----- 1 files changed, 5 insertions(+), 5 deletions(-) diff --git a/com32/lib/syslinux/disk.c b/com32/lib/syslinux/disk.c index 093751a..d96acbf 100644 ---
2008 Mar 25
3
Com32 api problem !
...otal; unsigned short bytes; } disk; void ExtDiskInfo(int n) { printf("ExtDiskInfo entry.\n"); com32sys_t regs; memset(&regs,0,sizeof(regs)); regs.eax.b[1] = 0x48; regs.edx.b[0] = 0x80 + n; regs.ds = SEG(__com32.cs_bounce); regs.esi.w[0] = OFFS(__com32.cs_bounce); __intcall(0x13,&regs,&regs); if (regs.eax.b[1] == 0) { memcpy(&disk,__com32.cs_bounce,sizeof(struct params)); size = disk.total * disk.bytes; printf("Total hard disk size : %lld Mb (%lld sectors)\n",size>>20,disk.total); } else printf("Disk %d error : %d\...