delorie.com/archives/browse.cgi   search  
Mail Archives: djgpp/1994/01/18/22:18:26

From: sandmann AT clio DOT rice DOT edu (Charles W. Sandmann)
Subject: int86x() behavior
To: djgpp AT sun DOT soe DOT clarkson DOT edu (DJGPP Mailing List)
Date: Tue, 18 Jan 1994 20:21:02 -0600 (CST)

I have helped several people work through problems in V1.11 which occurred due
to use of int86x().  I thought I would post this so there would be greater
awareness of the issues.

In V1.10 and before, int86x was treated internally like int86() - the segs
argument was completely ignored.  I guess many pieces of code ported from 
DOS were lucky to work in that configuration.  In V1.11, int86x() loads the
protected mode selectors with the values in segs, which unless they are
all set to valid protected mode selectors a protection violation results.

If you are porting code (or moving from an earlier version of DJGPP) and have
calls to int86x(), you will probably see failures unless you make a change:
#define int86x int86
which should restore the V1.10 and earlier behavior.  If you really need to
pass real mode segments, then use _go32_dpmi_simulate_int.  Note, the call
format is different, this is not a simple #define fix.  int86x() is
used ONLY for calls with selectors (such as the DPMI API calls) and all 
values must be set to valid selectors.

- Raw text -


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