Skip to contentSkip to conversation

bcc dpmi ver1.2.0

DISCUSSION Stas Sergeev 3 participants 4 messages Jun 12, 2004 – Jun 13, 2004

lore
Share & tools
lore
#0 lore raw

Hello.

Quoted 1 line · David Stevenson

I am trying to run borland bcc 5.02 under gentoo kernel 2.6.3 using dosemu 1.2.0. Is this possible?

No.

Quoted 1 line

The error I get is "Program requires DPMI uncommitted memory support"

Uncommitted memory support was recently implemented in dosemu. You have to upgrade your dosemu from CVS (to version 1.3.1) to get it working. And it will work reliably only with 2.4 kernels or with the latest 2.6.7-pre kernels because earlier 2.6 kernels have bugs in that area.
And you also should not run dosemu on any 2.6 kernels prior to 2.6.6.

Quoted 1 line

I think I have dpmi 0.9 running OK, but have seen suggestions I need dpmi 1.0. Can anyone confirm this?

True, uncommitted memory support is a DPMI 1.0 feature, but can also be implemented as a "VIRTUAL SUPPORT" API extension of DPMI 0.9, that's how it is now implemented in dosemu. Don't expect it in 1.2 versions of dosemu anytime soon however.

Quoted 3 lines

I have tried dpmione but it complains
"The CPU is in Virtual Mode and there's no VCPI host." Has anyone got this to run with dosemu?

That's something the one should never do. You can't run any DPMI server under dosemu because dosemu have the DPMI server built in.

Quoted 1 line

Is there another dpmi1.0 I can use?

No.

Quoted 1 line

I guess borland could have supplied one but I have not found it yet.

It is called 32rtm I beleive. It can work under the 1.3.1/CVS dosemu as a DOS extender. And you can run your Borland tools.

#1 lore raw
Quoted 4 lines · Stas Sergeev

You have to upgrade your dosemu from CVS (to version 1.3.1) to get it working. And it will work reliably only with 2.4 kernels or with the latest 2.6.7-pre kernels because earlier 2.6 kernels have bugs in that area.

Will CVS dosemu build against the 2.6 kernel headers? I had to use 2.4 headers for version 1.2.1 since matrox.c includes <sys/pci.h>, which in turn includes <linux/pci.h>, which, I suppose, is one of those headers we're not supposed to use anymore... :-(

#2 lore raw
Quoted 11 lines · R.L. Horn
Quoted 4 lines · Stas Sergeev

You have to upgrade your dosemu from CVS (to version 1.3.1) to get it working. And it will work reliably only with 2.4 kernels or with the latest 2.6.7-pre kernels because earlier 2.6 kernels have bugs in that area.

Will CVS dosemu build against the 2.6 kernel headers? I had to use 2.4 headers for version 1.2.1 since matrox.c includes <sys/pci.h>, which in turn includes <linux/pci.h>, which, I suppose, is one of those headers we're not supposed to use anymore... :-(

sys/pci.h should be fine and non-controversial though.
In a way /usr/include/linux/pci.h isn't a true kernel header but a sanitized copy for internal use by glibc (it used to be symlinked to the kernel source but that was during libc5 times (before 1999)). A very messy situation indeed.

The problem is that this sanitized copy wasn't clean enough. You need to remove the #include <linux/mod_devicetable.h> from /usr/include/linux/pci.h. This is at least the solution from Debian when I contacted them about the problem (they fixed it last December, and that's why i didn't bother about a workaround). I don't know about other distro's but Fedora doesn't seem to have problems with pci.h, and most other ones include dosemu so that should work too.

Bart

#3 lore raw
Quoted 1 line · Bart Oldeman

sys/pci.h should be fine and non-controversial though.

The <sys/pci.h> for glibc 2.2.5 does nothing but include <linux/pci.h>. Version 2.3 might be different, but I'm still screwing up the courage to upgrade (it requires gcc 3, which is going to be a major PIA for me).

Quoted 1 line

The problem is that this sanitized copy wasn't clean enough.

I wondered about that, since I didn't get the usual "don't include kernel headers" warning.

Quoted 2 lines

You need to remove the #include <linux/mod_devicetable.h> from /usr/include/linux/pci.h.

I stuck an "#ifdef __KERNEL__" around it which seems to have done the trick. Of course, now when an upgrade patch eventually fails, I'll have to somehow remember what I've done. :-)

Quoted 2 lines

I don't know about other distro's but Fedora doesn't seem to have problems with pci.h,

I don't run a distribution kernel, and the developers haven't fixed it as of 2.6.6 (whenever I gripe about header bugs I get a pro forma response about not using kernel headers in applications).

If it's not fixed in 2.6.7 I'll file a bugzilla report.