2 Copyright © 2011, The AROS Development Team. All rights reserved.
5 Desc: Create a seglist for ROM code.
8 #include <aros/debug.h>
9 #include <proto/exec.h>
13 ULONG Size
; /* Length of segment in # of bytes */
14 BPTR Next
; /* Next segment (always 0 for this) */
15 struct FullJumpVec Code
; /* Code to jump to the offset */
16 } __attribute__((packed
));
18 /*****************************************************************************
21 #include <proto/arossupport.h>
26 APTR function
, struct ExecBase
*SysBase
)
31 Create a SegList, which contains a call to 'function'
34 function - Function to call when the SegList is executed
37 BPTR to the SegList that was allocated. This SegList can
38 be freed by DOS/UnloadSeg. If not enough memory,
39 BNULL will be returned.
49 dos.library/UnloadSeg()
53 *****************************************************************************/
55 struct phony_segment
*segtmp
;
57 segtmp
= AllocMem(sizeof(*segtmp
), MEMF_ANY
);
61 segtmp
->Size
= sizeof(*segtmp
);
62 segtmp
->Next
= (BPTR
)0;
63 __AROS_SET_FULLJMP(&segtmp
->Code
, function
);
65 CacheClearE(&segtmp
->Code
, sizeof(struct FullJumpVec
), CACRF_ClearI
| CACRF_ClearD
);
67 D(bug("[CreateSegList] Created jump segment 0x%p, code 0x%p, target 0x%p\n", MKBADDR(&segtmp
->Next
), &segtmp
->Code
, function
));
69 return MKBADDR(&segtmp
->Next
);