I developed this version specifically to run on Debian squeeze, which is based on 2.6.32. I use it on AMD64. I have also done some brief checks to verify it works on i386. My application is curses SCO thing which seems to exercise most of the kernel - except networking.
This isn't a patch, as there are too many changes to make it worthwhile. For the developers here, here is an outline of some of the changes I did make, mostly to get it to run on AMD64:
- The amd64 variant provides both 64bit and 32bit syscalls. (Previously all SYS()'s went to the ia32 entry point.) Turns out some ia32 entry points zero the upper 32 bits pointers they are passed, which means when you pass them pointers into kernel space they blow up. The SYS() macro still does 32bit systems calls (always), but SYS_NATIVE() does 64bit on amd64, and 32bit on i386.
- The __NR_syscall's in i386_std.h have been renamed to __NR_IBCS_syscall to avoid clashes with the 64bit __NR_syscall's.
- On amd64 lcall7's and lcall27's on amd64 now via an int 0x81 trampoline installed into userspace by lcall_ldt() for reason's explained at length in the source. entry_64.S was re-written, and the calling sequences for lcall_ldt() were changed accordingly. If the reason for the round-about way it was done (backpatching the stack so vm_86 was called on the way out) still applies then I have broken something, but the new way does seem to work.
- Numerous long's, and even some pointers where changed to s32's and u32's because on amd64 sizeof(long) != sizeof(void*). I did this for all personalities, and probably stuffed some things up in the non SCO personalities.
- Added ABI_NOOPT to CONFIG. Setting it to Y turns off compiler optimisation, which makes debugging somewhat easier.
- Commented out the XEN stuff. The symbols required to support it are no longer exported, at least on debian.
- and of course did the 2.6.32 port, which mostly consisted of handling the split of bits of flush_old_exec() into a new method called setup_new_exec().
The previous version used int $0x81 on amd64. Turns out on a Dell optiplex int $0x81 fires when you press a key on console USB keyboard, with unfortunate consequences. I anybody has a theory on why int $0x81 would fire at all I would like to hear it.
This version (ibcs-3.9) changes the interrupt for amd64 to int $0x7f, and makes it settable using a module parameter to abi_lcall. This fixes the problem on a Dell optiplex at least. It also complies on 2.6.35, but I haven't tested it on there.
Previous version didn't compile on 2.6.35 as claimed. New version uploaded that hopefully does.
3.9.2 fixes a bug when running abitrace - it generated a segfault.
abitrace no longer segfaults
Compiles and executes flawlessy on 2.6.37.6 (and against 2.6.37.6 headers).
Good work!
Here the environment:
bash-4.1# /usr/src/linux/scripts/ver_linux
If some fields are empty or look unusual you may have an old version.
Compare to the current minimal requirements in Documentation/Changes.
Linux test 2.6.37.6-smp #2 SMP Sat Apr 9 23:39:07 CDT 2011 i686 Intel(R) Pentium(R) 4 CPU 3.40GHz GenuineIntel GNU/Linux
Gnu C 4.5.2
Gnu make 3.82
binutils 2.21.51.0.6.20110118
util-linux 2.19
mount support
module-init-tools 3.12
e2fsprogs 1.41.14
jfsutils 1.1.15
reiserfsprogs 3.6.21
xfsprogs 3.1.4
pcmciautils 017
quota-tools 3.17.
PPP 2.4.5
Linux C Library 2.13
Dynamic linker (ldd) 2.13
Linux C++ Library 6.0.14
Procps 3.2.8
Net-tools 1.60
Kbd 1.15.2
oprofile 0.9.6
Sh-utils 8.11
wireless-tools 29
Modules Loaded abi_wyse abi_uw7 abi_solaris abi_isc abi_ibcs abi_sco abi_cxenix abi_svr4 binfmt_xout binfmt_coff abi_lcall abi_util hwmon_vid snd_s
eq_dummy snd_seq_oss snd_seq_midi_event snd_seq snd_seq_device snd_pcm_oss snd_mixer_oss ipv6 pcmcia pcmcia_core lp fuse radeon ttm processor drm_kms_helpe
r ppdev rtc_cmos rtc_core parport_pc parport rtc_lib drm thermal_sys r8169 mii intel_agp intel_gtt button hwmon i2c_algo_bit snd_intel8x0 snd_ac97_codec ac
97_bus snd_pcm iTCO_wdt snd_timer iTCO_vendor_support agpgart snd i2c_i801 soundcore snd_page_alloc i2c_core shpchp evdev sg
Hi
Can anyone helpme in installing older Oracle-7.1.6 basically designed for SCO unix on RHEL-6x any version using IBCS modules ? It is a challenging one, I think.
Last edit: mlthati 2014-11-05