⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 setjmp.h

📁 《嵌入式固件开发》一书的源码
💻 H
字号:
inline setjmp(env)struct jmp_struct  *env;{    unsigned long   sr, *sp;    /* Copy A2-A5, D2-D7, FP, USP, SSP & PC to env structure. */    /* Recall that %a6 = %fp and %a7 = %sp. */    __asm__("movl a2,%0" : "=a" (env->A2));    __asm__("movl a3,%0" : "=a" (env->A3));    __asm__("movl a4,%0" : "=a" (env->A4));    __asm__("movl a5,%0" : "=a" (env->A5));    __asm__("movl d2,%0" : "=a" (env->D2));    __asm__("movl d3,%0" : "=a" (env->D3));    __asm__("movl d4,%0" : "=a" (env->D4));    __asm__("movl d5,%0" : "=a" (env->D5));    __asm__("movl d6,%0" : "=a" (env->D6));    __asm__("movl d7,%0" : "=a" (env->D7));    asm("mov.w %sr,%d0");    __asm__("movl d0,%0" : "=a" (sr));    asm("mov.l %sp, %a0");    __asm__("movl a0,%0" : "=a" (sp));    if (sr & (unsigned long)0x2000) {        env->SSP = (unsigned long)sp;//      env->SSP += STACK_ADJUST;       /* account for the setjmp stack frame */        asm("mov.l %usp, %a0");        __asm__("movl a0,%0" : "=a" (env->USP));        asm("mov.l %sp, %a0");        __asm__("movl a0,%0" : "=a" (sp));    }    else {        env->USP = (unsigned long)sp;//      env->USP += STACK_ADJUST;       /* account for the setjmp stack frame */    }    sp += 3;    env->FP = *sp;    sp++;    env->PC = *sp;    return(0);                      /* The call to setjmp MUST return 0 */}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -