pmon.h 1.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546
  1. /*
  2. * This file is subject to the terms and conditions of the GNU General Public
  3. * License. See the file "COPYING" in the main directory of this archive
  4. * for more details.
  5. *
  6. * Copyright (C) 2004 by Ralf Baechle
  7. *
  8. * The cpustart method is a PMC-Sierra's function to start the secondary CPU.
  9. * Stock PMON 2000 has the smpfork, semlock and semunlock methods instead.
  10. */
  11. #ifndef _ASM_PMON_H
  12. #define _ASM_PMON_H
  13. struct callvectors {
  14. int (*open) (char*, int, int);
  15. int (*close) (int);
  16. int (*read) (int, void*, int);
  17. int (*write) (int, void*, int);
  18. off_t (*lseek) (int, off_t, int);
  19. int (*printf) (const char*, ...);
  20. void (*cacheflush) (void);
  21. char* (*gets) (char*);
  22. union {
  23. int (*smpfork) (unsigned long cp, char *sp);
  24. int (*cpustart) (long, void (*)(void), void *, long);
  25. } _s;
  26. int (*semlock) (int sem);
  27. void (*semunlock) (int sem);
  28. };
  29. extern struct callvectors *debug_vectors;
  30. #define pmon_open(name, flags, mode) debug_vectors->open(name, flage, mode)
  31. #define pmon_close(fd) debug_vectors->close(fd)
  32. #define pmon_read(fd, buf, count) debug_vectors->read(fd, buf, count)
  33. #define pmon_write(fd, buf, count) debug_vectors->write(fd, buf, count)
  34. #define pmon_lseek(fd, off, whence) debug_vectors->lseek(fd, off, whence)
  35. #define pmon_printf(fmt...) debug_vectors->printf(fmt)
  36. #define pmon_cacheflush() debug_vectors->cacheflush()
  37. #define pmon_gets(s) debug_vectors->gets(s)
  38. #define pmon_cpustart(n, f, sp, gp) debug_vectors->_s.cpustart(n, f, sp, gp)
  39. #define pmon_smpfork(cp, sp) debug_vectors->_s.smpfork(cp, sp)
  40. #define pmon_semlock(sem) debug_vectors->semlock(sem)
  41. #define pmon_semunlock(sem) debug_vectors->semunlock(sem)
  42. #endif /* _ASM_PMON_H */