rest of the execbase layout
struct alib_memchunk {
struct alib_memchunk *next;
uint32_t size;
struct alib_memchunk {
struct alib_memchunk *next;
uint32_t size;
+} __attribute__((packed));
+
+struct alib_intrnode {
+ ALIB_NODE_COMMON(struct alib_intrnode);
+ void *data;
+ void (*code)();
+} __attribute__((packed));
struct alib_memnode {
ALIB_NODE_COMMON(struct alib_memnode);
struct alib_memnode {
ALIB_NODE_COMMON(struct alib_memnode);
struct alib_memchunk *freelist;
void *start, *end;
uint32_t freesz;
struct alib_memchunk *freelist;
void *start, *end;
uint32_t freesz;
+} __attribute__((packed));
struct alib_memlist {
struct alib_memnode *head, *tail, *tailpred;
uint8_t type;
uint8_t pad;
struct alib_memlist {
struct alib_memnode *head, *tail, *tailpred;
uint8_t type;
uint8_t pad;
+} __attribute__((packed));
struct alib_library {
ALIB_NODE_COMMON(struct alib_library);
struct alib_library {
ALIB_NODE_COMMON(struct alib_library);
char *idstr;
uint32_t csum;
uint16_t nref;
char *idstr;
uint32_t csum;
uint16_t nref;
+} __attribute__((packed));
struct alib_intvec {
void *data;
void (*code)();
struct alib_intvec {
void *data;
void (*code)();
- ALIB_NODE_COMMON(struct alib_intvec);
-};
+ struct alib_intrnode *node;
+} __attribute__((packed));
struct alib_execbase {
struct alib_library lib;
struct alib_execbase {
struct alib_library lib;
struct alib_memlist memlist;
/* ... more ... */
struct alib_memlist memlist;
/* ... more ... */
+} __attribute__((packed));
struct alib_execbase *execbase;
struct alib_execbase *execbase;
struct alib_memnode *mem;
printf("chip memory top: %lx\n", (unsigned long)execbase->chipmem_top);
struct alib_memnode *mem;
printf("chip memory top: %lx\n", (unsigned long)execbase->chipmem_top);
-
- printf("memlist head node:\n");
- memdump(execbase->memlist.head, sizeof(struct alib_memnode));
+ printf("ext memory top: %lx\n", (unsigned long)execbase->extmem_top);
printf("Memory ranges:\n");
mem = execbase->memlist.head;
printf("Memory ranges:\n");
mem = execbase->memlist.head;