aboutsummaryrefslogtreecommitdiffstats
path: root/comboot.inc
diff options
context:
space:
mode:
authorhpa <hpa>2005-08-21 05:11:50 +0000
committerhpa <hpa>2005-08-21 05:11:50 +0000
commit87575da8034373b0bf9ea147329b6d24dc5a825a (patch)
tree43da9ec5949105159f1615694be826d0cbe7f2c8 /comboot.inc
parente5450b7cd33808991aa8d0747523a6874c4204e5 (diff)
downloadsyslinux-87575da8034373b0bf9ea147329b6d24dc5a825a.tar.gz
syslinux-87575da8034373b0bf9ea147329b6d24dc5a825a.tar.xz
syslinux-87575da8034373b0bf9ea147329b6d24dc5a825a.zip
Add more low-level API function to load the kernel, and make the
menu subsystem use it.
Diffstat (limited to 'comboot.inc')
-rw-r--r--comboot.inc38
1 files changed, 38 insertions, 0 deletions
diff --git a/comboot.inc b/comboot.inc
index 90d9e4b1..91e260a0 100644
--- a/comboot.inc
+++ b/comboot.inc
@@ -681,6 +681,44 @@ comapi_features:
clc
ret
+;
+; INT 22h AX=0016h Run kernel image
+;
+comapi_runkernel:
+ push ds
+ mov ds,P_DS
+ mov si,P_SI
+ mov di,KernelName
+ push di
+ call mangle_name
+ pop di
+ pop ds
+ call searchdir
+ jz comapi_err ; Kernel doesn't exist
+
+ ; The kernel image was found, so we can load it...
+ mov [Kernel_SI],si
+ mov [Kernel_EAX],ax
+ mov [Kernel_EAX+2],dx
+
+ push es
+ mov ds,P_ES
+ mov si,P_BX
+ push word real_mode_seg
+ pop es
+ mov di,cmd_line_here
+ call strcpy
+ dec di
+ mov [CmdLinePtr],di
+ pop es
+
+%if IS_PXELINUX
+ mov al,P_CL
+ mov [IPAppend],al
+%endif
+
+ mov bx,kernel_good_saved
+
section .data
int21_table:
int21 00h, comboot_return