notejmp.c 322 B

123456789101112131415161718192021
  1. #include <u.h>
  2. #include <libc.h>
  3. #include <ureg.h>
  4. int __noterestore(void);
  5. void
  6. notejmp(void *vr, jmp_buf j, int ret)
  7. {
  8. struct Ureg *r = vr;
  9. /*
  10. * song and dance to get around the kernel smashing r1 in noted
  11. */
  12. r->sp = ret;
  13. if(ret == 0)
  14. r->sp = 1;
  15. r->pc = j[JMPBUFPC];
  16. r->sp = j[JMPBUFSP];
  17. noted(NCONT);
  18. }