Mail Archives: djgpp/1999/06/25/16:02:55
This is a multi-part message in MIME format.
------=_NextPart_000_0014_01BEBF1E.AE290300
Content-Type: text/plain;
charset="iso-8859-1"
Content-Transfer-Encoding: quoted-printable
Hi world:
I have a problem with my application. I am using an interrupt =
software (interrupt 0x60) with a real mode handler and an hardware =
interrupt (interrupt 3) with a protected mode handler.
I have detected that sometimes, when I execute the handler, the =
interrupt does not return to go up. To install the handler I use the =
_go32_dpmi_allocate_iret_wrapper and =
_go32_dpmi_set_protected_mode_interrupt_vector functions. At the end of =
the handler I send an EOI to the interrupt controller:=20
outp(MASTER_PIC,EOI)
But the interrupt does not return to turn on. And the rest of the =
program run fine.
To install the software interrupt I use the =
_go32_dpmi_allocate_real_mode_callback_retf function.
I have detected that sometimes, when I am inside the hardware =
interrupt, the software interrupt turn on and the handler is executed. =
Then, the hardware interrupt never turn up. But if I put a 'disable' =
instruction at the begining of the hardware interrupt handler, the =
software interrupt handler is not generated in the hardware interrupt, =
but more late the hardware interrupt is lost, but the rest of the =
programm run fine.
I have read in delorie documentation that:
" where the CPU's interrupt is virtualizad, IRET may not restore the =
interrupt flag. Therefore clients should execute a STI instruction.or =
else interrupts remain disabled."
Must I make a STI before the IRET -outp(MASTER_PIC,EOI)- instruction?
How can I make an STI instruction in DJGPP?
=20
Dismuntel S.A.L.
Av. Pais Valenciano 155, E
46680-Algemes=ED (Valencia)
Espa=F1a
Tlf:+34-96-2481217
FAX:+34-96-2481217
=20
email:dismuntel AT apdo DOT com
------=_NextPart_000_0014_01BEBF1E.AE290300
Content-Type: text/html;
charset="iso-8859-1"
Content-Transfer-Encoding: quoted-printable
<!DOCTYPE HTML PUBLIC "-//W3C//DTD W3 HTML//EN">
<HTML>
<HEAD>
<META content=3Dtext/html;charset=3Diso-8859-1 =
http-equiv=3DContent-Type>
<META content=3D'"MSHTML 4.71.1712.3"' name=3DGENERATOR>
</HEAD>
<BODY bgColor=3D#ffffff>
<DIV><FONT color=3D#000000 face=3DArial size=3D2>Hi world:</FONT></DIV>
<DIV><FONT color=3D#000000 face=3DArial size=3D2></FONT> </DIV>
<DIV><FONT face=3DArial size=3D2> I have a problem with my =
application.=20
I am using an interrupt software (interrupt 0x60) with a real mode =
handler and=20
an hardware interrupt (interrupt 3) with a protected mode =
handler.</FONT></DIV>
<DIV><FONT face=3DArial size=3D2></FONT> </DIV>
<DIV><FONT face=3DArial size=3D2> I have detected that sometimes, =
when I=20
execute the handler, the interrupt does not return to go up. To install =
the=20
handler I use the </FONT><FONT color=3D#000000 face=3DArial=20
size=3D2>_go32_dpmi_allocate_iret_wrapper and =20
_go32_dpmi_set_protected_mode_interrupt_vector functions. At the end of =
the=20
handler I send an EOI to the interrupt controller: </FONT></DIV>
<DIV><FONT color=3D#000000 face=3DArial size=3D2> =20
outp(MASTER_PIC,EOI)</FONT></DIV>
<DIV><FONT color=3D#000000 face=3DArial size=3D2></FONT> </DIV>
<DIV><FONT color=3D#000000 face=3DArial size=3D2> But the =
interrupt does not=20
return to turn on. And the rest of the program run fine.</FONT></DIV>
<DIV><FONT color=3D#000000 face=3DArial size=3D2></FONT> </DIV>
<DIV><FONT color=3D#000000 face=3DArial size=3D2> To install the =
software=20
interrupt I use the _go32_dpmi_allocate_real_mode_callback_retf=20
function.</FONT></DIV>
<DIV><FONT color=3D#000000 face=3DArial size=3D2></FONT> </DIV>
<DIV><FONT color=3D#000000 face=3DArial size=3D2> I have detected =
that=20
sometimes, when I am inside the hardware interrupt, the software =
interrupt turn=20
on and the handler is executed. Then, the hardware interrupt never turn =
up. But=20
if I put a 'disable' instruction at the begining of the hardware =
interrupt=20
handler, the software interrupt handler is not generated in the hardware =
interrupt, but more late the hardware interrupt is lost, but the rest of =
the=20
programm run fine.</FONT></DIV>
<DIV><FONT color=3D#000000 face=3DArial size=3D2></FONT> </DIV>
<DIV><FONT color=3D#000000 face=3DArial size=3D2> I have read in =
delorie=20
documentation that:</FONT></DIV>
<DIV><FONT color=3D#000000 face=3DArial size=3D2> " =
where the CPU's=20
interrupt is virtualizad, IRET may not restore the interrupt flag. =
Therefore=20
clients should execute a STI instruction.or else interrupts remain=20
disabled."</FONT> </DIV>
<DIV><FONT color=3D#000000 face=3DArial size=3D2></FONT> </DIV>
<DIV><FONT color=3D#000000 face=3DArial size=3D2></FONT> </DIV>
<DIV><FONT color=3D#000000 face=3DArial size=3D2> Must I make a =
STI before the=20
IRET -outp(MASTER_PIC,EOI)- instruction?</FONT></DIV>
<DIV><FONT color=3D#000000 face=3DArial size=3D2> How can I make =
an STI=20
instruction in DJGPP?</FONT> </DIV>
<DIV><FONT color=3D#000000 face=3DArial size=3D2> =
</FONT> </DIV>
<DIV> </DIV>
<DIV><FONT color=3D#000000 face=3DArial size=3D2>Dismuntel S.A.L.<BR>Av. =
Pais=20
Valenciano 155, E<BR>46680-Algemesí=20
(Valencia)<BR>España<BR>Tlf:+34-96-2481217<BR>FAX:+34-96-2481217<B=
R>=20
<BR><A=20
href=3D"mailto:email:dismuntel AT apdo DOT com">email:dismuntel AT apdo DOT com</A></FO=
NT></DIV></BODY></HTML>
------=_NextPart_000_0014_01BEBF1E.AE290300--
- Raw text -