[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