time.h 1.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051
  1. #ifndef _IOP13XX_TIME_H_
  2. #define _IOP13XX_TIME_H_
  3. #define IRQ_IOP_TIMER0 IRQ_IOP13XX_TIMER0
  4. #define IOP_TMR_EN 0x02
  5. #define IOP_TMR_RELOAD 0x04
  6. #define IOP_TMR_PRIVILEGED 0x08
  7. #define IOP_TMR_RATIO_1_1 0x00
  8. void iop_init_time(unsigned long tickrate);
  9. unsigned long iop_gettimeoffset(void);
  10. static inline void write_tmr0(u32 val)
  11. {
  12. asm volatile("mcr p6, 0, %0, c0, c9, 0" : : "r" (val));
  13. }
  14. static inline void write_tmr1(u32 val)
  15. {
  16. asm volatile("mcr p6, 0, %0, c1, c9, 0" : : "r" (val));
  17. }
  18. static inline u32 read_tcr0(void)
  19. {
  20. u32 val;
  21. asm volatile("mrc p6, 0, %0, c2, c9, 0" : "=r" (val));
  22. return val;
  23. }
  24. static inline u32 read_tcr1(void)
  25. {
  26. u32 val;
  27. asm volatile("mrc p6, 0, %0, c3, c9, 0" : "=r" (val));
  28. return val;
  29. }
  30. static inline void write_trr0(u32 val)
  31. {
  32. asm volatile("mcr p6, 0, %0, c4, c9, 0" : : "r" (val));
  33. }
  34. static inline void write_trr1(u32 val)
  35. {
  36. asm volatile("mcr p6, 0, %0, c5, c9, 0" : : "r" (val));
  37. }
  38. static inline void write_tisr(u32 val)
  39. {
  40. asm volatile("mcr p6, 0, %0, c6, c9, 0" : : "r" (val));
  41. }
  42. #endif