From: Martin Str|mberg Message-Id: <199903201808.TAA28613@father.ludd.luth.se> Subject: Re: Some assembly questions To: mert0407 AT sable DOT ox DOT ac DOT uk Date: Sat, 20 Mar 1999 19:08:48 +0100 (MET) Cc: djgpp AT delorie DOT com (DJGPP) In-Reply-To: <199903201755.SAA12254@zed.ludd.luth.se> from George Foot at "Mar 20, 99 05:53:11 pm" X-Mailer: ELM [version 2.4ME+ PL15 (25)] MIME-Version: 1.0 Content-Type: text/plain; charset=US-ASCII Content-Transfer-Encoding: 7bit Reply-To: djgpp AT delorie DOT com X-Mailing-List: djgpp AT delorie DOT com X-Unsubscribes-To: listserv AT delorie DOT com Precedence: bulk According to George Foot: > On 20 Mar 99 at 12:01, Martin Str|mberg wrote: > > > : _go32_dpmi_seginfo old_isr, new_isr; > > Added line > > unsigned long address_of_old_isr > > What about the segment of the old ISR? I don't think you > should just assume it's in your CS. Right! Now my assembly looks like: asm(" .text .p2align 2 .globl _handler _handler: /* Makes no diff.: */ pushw %ds pushw %cs popw %ds pushw %fs movw (_selector_of_old_isr), %fs lcall %fs:(_address_of_old_isr) /* ret or iret makes no difference. */ /* Additionaly, if the instruction above is a jmp is doesn't matter. */ popw %fs popw %ds iret _handler_end: nop "); And it's still behaving just as badly. Lush, Split, MartinS