Files
Arquivotheca.SunOS-4.1.4/usr.lib/libpixrect/pr/pr_shlib_stub.h
seta75D ff309bfe1c Init
2021-10-11 18:37:13 -03:00

46 lines
964 B
C

/* @(#)pr_shlib_stub.h 1.1 94/10/31 SMI */
/*
* Copyright 1987-1989 by Sun Microsystems, Inc.
*/
#ifndef pr_shlib_stub_DEFINED
#define pr_shlib_stub_DEFINED
/* special shared library entry point stubs */
#if mc68000
#define STUB(fun, args) _STUB(_/**/fun,__/**/fun)
#define _STUB(label,target) \
asm(".text"); \
asm(".globl label"); \
asm("label:"); \
asm("movl #__GLOBAL_OFFSET_TABLE_, a0"); \
asm("lea pc@(0,a0:l), a0"); \
asm("movl a0@(target), a0"); \
asm("jmp a0@");
#endif mc68000
#if sparc
#define STUB(fun, args) _STUB(_/**/fun,__/**/fun)
#define _STUB(label,target) \
asm(".seg \"text\""); \
asm(".global label"); \
asm("label:"); \
asm("mov %o7, %g1"); \
asm("call target"); \
asm("mov %g1, %o7");
#endif sparc
#ifndef STUB
#define STUB(fun,args) \
fun args { \
extern _/**/fun(); \
return _/**/fun args ; \
}
#endif !STUB
#define ROPSTUB(name) STUB(name,(dpr, dx, dy, dw, dh, op, spr, sx, sy))
#endif pr_shlib_stub_DEFINED