summaryrefslogtreecommitdiff
path: root/src/memory.h
blob: c5b63673bcabc0e4082874173926773e3622c7ca (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
#ifndef __MEMORY_H
#define __MEMORY_H

#include <stdint.h>
#include "redacted.h"
#include "multiboot.h"

enum cell_type {
	FREE_CELL,
	CONS_CELL,
	INT_CELL,
	CHAR_CELL,
	FLOAT_CELL,
	ARRAY_CELL,
	ARRAY_MEMBER,
	APIOFORM
};

struct cell {
	uint8_t type;
	union {
		struct cell *free;
		struct cell *cons;
		struct {int type : 8; int size : 24;} array_cell;
		uint32_t int_;
		uint32_t char_;
		float float_;
		REDACTED_t apioform;
	} car;
	struct cell *cdr;
};

uint32_t memory_available;

void init_memory(multiboot_info_t *mb);

#endif