Made int21/ah=25,35 reentrant. Solves problem with Intel PRO/1000 driver.

git-svn-id: https://svn.code.sf.net/p/freedos/svn/kernel/trunk@919 6ac86273-5f31-0410-b378-82cca8765d1b
This commit is contained in:
Bart Oldeman 2004-05-04 09:34:47 +00:00
parent 6947542a5e
commit 5a6e1845a8
2 changed files with 20 additions and 10 deletions

View File

@ -232,8 +232,12 @@ int21_reentry:
mov dx,[cs:_DGROUP_] mov dx,[cs:_DGROUP_]
mov ds,dx mov ds,dx
cmp ah,25h
je int21_user
cmp ah,33h cmp ah,33h
je int21_user je int21_user
cmp ah,35h
je int21_user
cmp ah,50h cmp ah,50h
je int21_user je int21_user
cmp ah,51h cmp ah,51h

View File

@ -69,6 +69,11 @@ VOID ASMCFUNC int21_syscall(iregs FAR * irp)
switch (irp->AH) switch (irp->AH)
{ {
/* Set Interrupt Vector */
case 0x25:
setvec(irp->AL, MK_FP(irp->DS, irp->DX));
break;
/* DosVars - get/set dos variables */ /* DosVars - get/set dos variables */
case 0x33: case 0x33:
switch (irp->AL) switch (irp->AL)
@ -139,6 +144,15 @@ VOID ASMCFUNC int21_syscall(iregs FAR * irp)
} }
break; break;
/* Get Interrupt Vector */
case 0x35:
{
intvec p = getvec(irp->AL);
irp->ES = FP_SEG(p);
irp->BX = FP_OFF(p);
break;
}
/* Set PSP */ /* Set PSP */
case 0x50: case 0x50:
cu_psp = irp->BX; cu_psp = irp->BX;
@ -638,9 +652,7 @@ dispatch:
break; break;
/* Set Interrupt Vector */ /* Set Interrupt Vector */
case 0x25: /* case 0x25: handled above (re-entrant) */
setvec(lr.AL, FP_DS_DX);
break;
/* Dos Create New Psp */ /* Dos Create New Psp */
case 0x26: case 0x26:
@ -788,13 +800,7 @@ dispatch:
break; break;
/* Get Interrupt Vector */ /* Get Interrupt Vector */
case 0x35: /* case 0x35: handled above (reentrant) */
{
intvec p = getvec((COUNT) lr.AL);
lr.ES = FP_SEG(p);
lr.BX = FP_OFF(p);
}
break;
/* Dos Get Disk Free Space */ /* Dos Get Disk Free Space */
case 0x36: case 0x36: