[fpc-devel]Calling previous INTroutine
Jonas Maebe
jonas at zeus.rug.ac.be
Thu Dec 7 17:22:02 CET 2000
>>> asm
>>> pushfd
>>> call qword ptr [OldHandler]
>>> end;
>>>
>>> It just traps. What can I do? (I'm working with system timer ISR).
>>Make sure OldHandler is locked in memory using lockdata(). And shouldn't
>>you use 'call far ptr [OldHandler]' instead?
>
>It says that compiler ignores "far". But it doesn't work anyways.
>Locked or not. Maybe there's some undocumented mechanism to do ISR
>chaining in go32v2?
Note that ds probably doesn't point to the data segment of your program
when the ISR is entered, so you should either put the oldhandler variable
in the code segment (and do a "call far ptr [cs:oldhandler]"), or first
load ds with the ds from the program (it's shown how to do this in the
ISR example of the go32v2 docs) before executing the above call.
BTW: "call qword ptr" should be rejected, because far pointers are only
48bit, not 64bit.
Jonas
More information about the fpc-devel
mailing list