fw.h 1.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071
  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 no_return _die(void);
  26. extern no_return exit(int);
  27. extern no_return _exit(int);
  28. /* Value of an absolute symbol with one more _ than here given */
  29. #define abssymval(x) \
  30. static inline size_t x (void) { \
  31. extern const char _ ## x []; \
  32. return (size_t) _ ## x; \
  33. }
  34. extern const uint8_t _end[];
  35. extern void *_sbrk(size_t);
  36. extern uint32_t timer_irq_start;
  37. static inline uint32_t timer_count(void)
  38. {
  39. extern volatile uint32_t timer_irq_count;
  40. return timer_irq_count;
  41. }
  42. extern void init(void);
  43. extern void mount_abcdrives(void);
  44. extern void read_rtc(void);
  45. extern void write_rtc(void);
  46. extern bool do_write_rtc;
  47. extern void rtc_abc_init(void);
  48. extern void rtc_abc_io_poll(void);
  49. extern void disk_cache_init(void);
  50. extern void pun80_init(void);
  51. extern void romcopy_download(void *, size_t, size_t);
  52. extern void romcopy_bzero(void *, size_t);
  53. extern void rom_print_serial(void);
  54. extern qword_t rom_serial;
  55. extern char rom_serial_str[];
  56. extern void run_test_image(void);
  57. #endif /* FW_H */