: "ebx", "ecx", "esi", "edi", "cc", "memory");
}
-inline void
+void
farcall16(struct bregs *callregs)
{
- if (MODE16) {
- _farcall16(callregs, GET_SEG(SS));
- return;
- }
extern void _cfunc16__farcall16(void);
- call16((u32)callregs - StackSeg * 16, StackSeg, _cfunc16__farcall16);
+ call16((u32)callregs, 0, _cfunc16__farcall16);
}
-inline void
+void
farcall16big(struct bregs *callregs)
{
extern void _cfunc16__farcall16(void);
- call16big((u32)callregs - StackSeg * 16, StackSeg, _cfunc16__farcall16);
+ call16big((u32)callregs, 0, _cfunc16__farcall16);
}
// Invoke a 16bit software interrupt.
-inline void
+void
__call16_int(struct bregs *callregs, u16 offset)
{
- if (MODESEGMENT)
- callregs->code.seg = GET_SEG(CS);
- else
- callregs->code.seg = SEG_BIOS;
callregs->code.offset = offset;
- farcall16(callregs);
+ if (!MODESEGMENT) {
+ callregs->code.seg = SEG_BIOS;
+ _farcall16((void*)callregs - StackSeg * 16, StackSeg);
+ return;
+ }
+ callregs->code.seg = GET_SEG(CS);
+ _farcall16(callregs, GET_SEG(SS));
}
// Reset the machine
u32 stack_hop_back(u32 eax, u32 edx, void *func);
int on_extra_stack(void);
struct bregs;
-inline void farcall16(struct bregs *callregs);
-inline void farcall16big(struct bregs *callregs);
-inline void __call16_int(struct bregs *callregs, u16 offset);
+void farcall16(struct bregs *callregs);
+void farcall16big(struct bregs *callregs);
+void __call16_int(struct bregs *callregs, u16 offset);
#define call16_int(nr, callregs) do { \
extern void irq_trampoline_ ##nr (); \
__call16_int((callregs), (u32)&irq_trampoline_ ##nr ); \