/* esp/sar_regs.h * * ESP8266 register definitions for the "sar" region (0x3FF2xxx) * * The 0x60000D00 register region is referred to as "sar" by some old header * files. Apparently referenced both by ROM I2C functions as well as ADC * config/read functions. * * Not compatible with ESP SDK register access code. */ #ifndef _ESP_SAR_REGS_H #define _ESP_SAR_REGS_H #include "esp/types.h" #include "common_macros.h" #define SAR_BASE 0x60000d00 // Unfortunately, // esp-open-sdk/xtensa-lx106-elf/xtensa-lx106-elf/sysroot/usr/include/xtensa/config/specreg.h // already has a "SAR" macro definition which would conflict with this, so // we'll use "ESPSAR" instead.. #define ESPSAR (*(struct SAR_REGS *)(SAR_BASE)) /* Note: This memory region is not currently well understood. Pretty much all * of the definitions here are from reverse-engineering the Espressif SDK code, * many are just educated guesses, and almost certainly some are misleading or * wrong. If you can improve on any of this, please contribute! */ struct SAR_REGS { uint32_t volatile _unknown0[18]; // 0x00 - 0x44 uint32_t volatile UNKNOWN_48; // 0x48 : used by sdk_system_restart_in_nmi() } __attribute__ (( packed )); _Static_assert(sizeof(struct SAR_REGS) == 0x4c, "SAR_REGS is the wrong size"); #endif /* _ESP_SAR_REGS_H */