| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051 | 
							- // XFLASH memory layout
 
- #pragma once
 
- #include <stdint.h>
 
- #include "bootapp.h" // for RAMSIZE
 
- #include "config.h"
 
- #define XFLASH_SIZE 0x40000ul // size of XFLASH
 
- #define LANG_OFFSET 0x0       // offset for language data
 
- #ifndef XFLASH_DUMP
 
- #define LANG_SIZE   XFLASH_SIZE
 
- #else
 
- #define DUMP_MAGIC  0x55525547ul
 
- struct dump_header_t
 
- {
 
-     // start with a magic value to indicate the presence of a dump, so that clearing
 
-     // a single page is sufficient for resetting the state
 
-     uint32_t magic;
 
-     uint8_t regs_present; // true when the lower segment containing registers is present
 
-     uint8_t crash_reason; // uses values from dump_crash_source
 
-     uint32_t pc;          // PC nearby the crash location
 
-     uint16_t sp;          // SP nearby the crash location
 
- };
 
- struct dump_data_t
 
- {
 
-     // contiguous region containing all addressable ranges
 
-     uint8_t regs[RAMSTART];
 
-     uint8_t sram[RAMSIZE];
 
- };
 
- struct dump_t
 
- {
 
-     struct dump_header_t header;
 
-     // data is page aligned (no real space waste, due to the larger
 
-     // alignment required for the whole dump)
 
-     struct dump_data_t __attribute__((aligned(256))) data;
 
- };
 
- // dump offset must be aligned to lower 4kb sector boundary
 
- #define DUMP_OFFSET ((XFLASH_SIZE - sizeof(dump_t)) & ~0xFFFul)
 
- #define DUMP_SIZE   (XFLASH_SIZE - DUMP_OFFSET) // effective dump size area
 
- #define LANG_SIZE   DUMP_OFFSET                 // available language space
 
- #endif
 
 
  |