projects
/
fw
/
altos
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
altos/lisp: Append a CRC to the saved image to validate on restore
[fw/altos]
/
src
/
lisp
/
ao_lisp.h
diff --git
a/src/lisp/ao_lisp.h
b/src/lisp/ao_lisp.h
index 44838a3419b814c81450efe3aae78520a9f12bcf..ea3d2a0905f8d5e8e9deab93523404f3bd0ecb61 100644
(file)
--- a/
src/lisp/ao_lisp.h
+++ b/
src/lisp/ao_lisp.h
@@
-26,15
+26,21
@@
typedef int16_t ao_signed_poly;
#ifdef AO_LISP_SAVE
struct ao_lisp_os_save {
#ifdef AO_LISP_SAVE
struct ao_lisp_os_save {
- ao_poly ao_lisp_atoms;
- ao_poly ao_lisp_globals;
+ ao_poly atoms;
+ ao_poly globals;
+ uint16_t const_checksum;
+ uint16_t const_checksum_inv;
};
};
-#define AO_LISP_POOL (AO_LISP_POOL_TOTAL - sizeof (struct ao_lisp_os_save))
+#define AO_LISP_POOL_EXTRA (sizeof(struct ao_lisp_os_save))
+#define AO_LISP_POOL ((int) (AO_LISP_POOL_TOTAL - AO_LISP_POOL_EXTRA))
int
ao_lisp_os_save(void);
int
ao_lisp_os_save(void);
+int
+ao_lisp_os_restore_save(struct ao_lisp_os_save *save, int offset);
+
int
ao_lisp_os_restore(void);
int
ao_lisp_os_restore(void);
@@
-67,12
+73,14
@@
extern uint8_t ao_lisp_const[AO_LISP_POOL_CONST];
#define _ao_lisp_atom_eval _atom("eval")
#define _ao_lisp_atom_read _atom("read")
#define _ao_lisp_atom_eof _atom("eof")
#define _ao_lisp_atom_eval _atom("eval")
#define _ao_lisp_atom_read _atom("read")
#define _ao_lisp_atom_eof _atom("eof")
+#define _ao_lisp_atom_save _atom("save")
+#define _ao_lisp_atom_restore _atom("restore")
#else
#include "ao_lisp_const.h"
#ifndef AO_LISP_POOL
#else
#include "ao_lisp_const.h"
#ifndef AO_LISP_POOL
-#define AO_LISP_POOL
16384
+#define AO_LISP_POOL
3072
#endif
#endif
-extern uint8_t ao_lisp_pool[AO_LISP_POOL];
+extern uint8_t ao_lisp_pool[AO_LISP_POOL
+ AO_LISP_POOL_EXTRA
];
#endif
/* Primitive types */
#endif
/* Primitive types */