📄 setjmp.c
字号:
/* This file is lisenced under LGPL * Copyright (C) 2002-2003, George Thanos <george.thanos@gdt.gr> * Yannis Mitsos <yannis.mitsos@gdt.gr> */#include <setjmp.h>#include <stdio.h>#include <signal.h>int setjmp( jmp_buf state){ asm volatile( "mov %0, G3\n\t" "mov %1, G4\n\t" :"=l"(state->__jmpbuf->G3), "=l"(state->__jmpbuf->G4) :/*no input*/ :"%G3", "%G4" ); asm volatile( "setadr %0\n\t" "mov %1, L1\n\t" "mov %2, L2\n\t" :"=l"(state->__jmpbuf->SavedSP), "=l"(state->__jmpbuf->SavedPC), "=l"(state->__jmpbuf->SavedSR) :/*no input*/); return 0;}int sigsetjmp( sigjmp_buf state , int savesigs){ if(savesigs) { state->__mask_was_saved = 1; /* how arg in <sigprocmask> is not significant */ sigprocmask(SIG_SETMASK, NULL, &state->__saved_mask); } else state->__mask_was_saved = 0; asm volatile( "mov %0, G3\n\t" "mov %1, G4\n\t" :"=l"(state->__jmpbuf->G3), "=l"(state->__jmpbuf->G4) :/*no input*/ :"%G3", "%G4" ); asm volatile( "setadr %0\n\t" "mov %1, L2\n\t" "mov %2, L3\n\t" :"=l"(state->__jmpbuf->SavedSP), "=l"(state->__jmpbuf->SavedPC), "=l"(state->__jmpbuf->SavedSR) :/*no input*/); return 0;}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -