delorie.com/archives/browse.cgi   search  
Mail Archives: djgpp/1996/05/17/05:04:16

Xref: news2.mv.net comp.os.msdos.djgpp:3941
From: malcolm AT manawatu DOT gen DOT nz (Malcolm Taylor)
Newsgroups: comp.os.msdos.djgpp
Subject: Re: ___djgpp_hw_exception?
Date: Fri, 17 May 1996 01:36:14 GMT
Organization: Grafik Software
Lines: 25
Message-ID: <4ngosd$n3o@news.manawatu.gen.nz>
References: <4n3b9e$rkf AT news1 DOT goodnet DOT com>
Reply-To: malcolm AT manawatu DOT gen DOT nz
NNTP-Posting-Host: malcolm.manawatu.gen.nz
Mime-Version: 1.0
To: djgpp AT delorie DOT com
DJ-Gateway: from newsgroup comp.os.msdos.djgpp

snarfy AT goodnet DOT com wrote:
>Here's some of my code:

>void my_timer_hook(void)
>{
>     asm("movb $0x99, %al
>          call ___djgpp_hw_exception");
>}

>I'm installing the timer hook with 
>_go32_dpmi_chain_protected_mode_interrupt_vector();

Make sure that the timer hook above is has an interrupt wrapper. Use
the _go32_allocate_iret_wrapper to get one (check out sb05_dj.zip for
an example). Secondly you should make sure that your timer code is
locked (lock the wrapper as well).

The problem is that __djgpp_hw_exception invalidates ds (and ss) and
so the next time your program uses the data segment or stack segment
(ie pushs, pops or looks at a global variable) then the exception will
get handled. This stops it happening in the interrupt. Without the
wrapper etc. you might be causing the exception inside the interrupt.

Malcolm

- Raw text -


  webmaster     delorie software   privacy  
  Copyright © 2019   by DJ Delorie     Updated Jul 2019