2
0

common.h 2.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596
  1. #ifndef FW_H
  2. #define FW_H
  3. #include "compiler.h"
  4. #include "picorv32.h"
  5. #include "irq.h"
  6. /* Sometimes useful combination types */
  7. typedef union {
  8. uint8_t b[8];
  9. uint16_t h[4];
  10. uint32_t l[2];
  11. uint64_t q;
  12. } qword_t;
  13. typedef union {
  14. uint8_t b[4];
  15. uint16_t h[2];
  16. uint32_t l;
  17. } lword_t;
  18. typedef union {
  19. uint8_t b[2];
  20. uint16_t h;
  21. } hword_t;
  22. extern const size_t __rom_offset;
  23. extern const uint32_t __dram_checksum;
  24. extern const char __datestamp[];
  25. extern char __esplink_start[], __esplink_end[];
  26. extern char __dram_init_start[], __dram_init_end[];
  27. extern char __dram_bss_start[], __dram_bss_end[];
  28. static inline __constfunc size_t _align_down(size_t addr, size_t align)
  29. {
  30. return addr & ~(align - 1);
  31. }
  32. #define align_down(a,l) ((__typeof__(a))_align_down((size_t)(a),(l)))
  33. static inline __constfunc size_t _align_up(size_t addr, size_t align)
  34. {
  35. return _align_down(addr + align - 1, align);
  36. }
  37. #define align_up(a,l) ((__typeof__(a))_align_up((size_t)(a),(l)))
  38. struct esplink_head;
  39. extern struct esplink_head esplink_head;
  40. extern uint32_t esplink[];
  41. extern no_return _die(void);
  42. extern no_return exit(int);
  43. extern no_return _exit(int);
  44. /* Value of an absolute symbol with one more _ than here given */
  45. #define abssymval(x) \
  46. static inline size_t x (void) { \
  47. extern const char _ ## x []; \
  48. return (size_t) _ ## x; \
  49. }
  50. extern const uint8_t _end[];
  51. extern void *_sbrk(ptrdiff_t);
  52. extern uint32_t timer_irq_start;
  53. static inline uint32_t timer_count(void)
  54. {
  55. extern volatile uint32_t timer_irq_count;
  56. return timer_irq_count;
  57. }
  58. extern void init(void);
  59. extern void heap_init(void);
  60. extern void mount_abcdrives(void);
  61. extern void read_rtc(void);
  62. extern void write_rtc(void);
  63. extern volatile bool do_write_rtc;
  64. extern void rtc_abc_init(void);
  65. extern void rtc_abc_io_poll(void);
  66. extern void pun80_init(void);
  67. extern void romcopy_download(void *, size_t, size_t);
  68. extern void romcopy_bzero(void *, size_t);
  69. extern void rom_print_serial(void);
  70. extern qword_t rom_serial;
  71. extern void run_test_image(void);
  72. extern void rom_flash_from_memory(void *, size_t);
  73. extern void rom_flash_from_sdcard(void);
  74. extern void esp_init(void);
  75. extern void esp_ota(const void *, size_t);
  76. #endif /* FW_H */