You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
25 lines
743 B
25 lines
743 B
15 years ago
|
#ifndef __CALLBACK_H__
|
||
|
#define __CALLBACK_H__
|
||
|
|
||
|
/* This is a workaround for a bug in the current version of gcc:
|
||
|
|
||
|
gcc assumes that no one will touch %a4 after it is set up in crt0.o.
|
||
|
This isn't true if a function is called as a callback by something
|
||
|
that wasn't compiled by gcc (like FrmCloseAllForms()). It may also
|
||
|
not be true if it is used as a callback by something in a different
|
||
|
shared library.
|
||
|
|
||
|
We really want a function attribute "callback" which will insert this
|
||
|
progloue and epilogoue automatically.
|
||
|
|
||
|
- Ian */
|
||
|
|
||
|
register void *reg_a4 asm("%a4");
|
||
|
|
||
|
#define CALLBACK_PROLOGUE \
|
||
|
void *save_a4 = reg_a4; asm("move.l %%a5,%%a4; sub.l #edata,%%a4" : :);
|
||
|
|
||
|
#define CALLBACK_EPILOGUE reg_a4 = save_a4;
|
||
|
|
||
|
#endif
|