arch/m68k-amiga: Define the gcc symbol 'start' instead of using .bss
[AROS.git] / compiler / clib / __exitfunc.c
blob652db1cdd8538f5b4364d2ec75d6675dc9a4688b
1 /*
2 Copyright © 1995-2011, The AROS Development Team. All rights reserved.
3 $Id$
4 */
6 #include "__arosc_privdata.h"
8 #include <aros/symbolsets.h>
9 #include <aros/startup.h>
10 #include <exec/lists.h>
11 #include "__exitfunc.h"
13 int __addexitfunc(struct AtExitNode *aen)
15 struct aroscbase *aroscbase = __get_aroscbase();
17 ADDHEAD((struct List *)&aroscbase->acb_atexit_list, (struct Node *)aen);
19 return 0;
22 int __init_atexit(struct aroscbase *aroscbase)
24 NEWLIST((struct List *)&aroscbase->acb_atexit_list);
26 return 1;
29 void __callexitfuncs(void)
31 struct aroscbase *aroscbase = __get_aroscbase();
32 struct AtExitNode *aen;
34 while (
35 (aen = (struct AtExitNode *) REMHEAD((struct List *) &aroscbase->acb_atexit_list))
38 switch (aen->node.ln_Type)
40 case AEN_VOID:
41 aen->func.fvoid();
42 break;
44 case AEN_PTR:
45 aen->func.fptr(__arosc_startup_error, aen->ptr);
46 break;
51 ADD2OPENLIB(__init_atexit, 100);