[BACK]Return to setjmp.h CVS log [TXT][DIR] Up to [local] / sys / arch / arm / include

Annotation of sys/arch/arm/include/setjmp.h, Revision 1.1

1.1     ! nbrk        1: /*     $OpenBSD: setjmp.h,v 1.1 2004/02/01 05:09:49 drahn Exp $        */
        !             2: /*     $NetBSD: setjmp.h,v 1.2 2001/08/25 14:45:59 bjh21 Exp $ */
        !             3:
        !             4: /*
        !             5:  * machine/setjmp.h: machine dependent setjmp-related information.
        !             6:  */
        !             7:
        !             8: #ifdef __ELF__
        !             9: #define        _JBLEN  64              /* size, in longs, of a jmp_buf */
        !            10: #else
        !            11: #define        _JBLEN  29              /* size, in longs, of a jmp_buf */
        !            12: #endif
        !            13:
        !            14: /*
        !            15:  * NOTE: The internal structure of a jmp_buf is *PRIVATE*
        !            16:  *       This information is provided as there is software
        !            17:  *       that fiddles with this with obtain the stack pointer
        !            18:  *      (yes really ! and its commercial !).
        !            19:  *
        !            20:  * Description of the setjmp buffer
        !            21:  *
        !            22:  * word  0     magic number    (dependant on creator)
        !            23:  *       1 -  3        f4              fp register 4
        !            24:  *      4 -  6 f5              fp register 5
        !            25:  *      7 -  9 f6              fp register 6
        !            26:  *     10 - 12 f7              fp register 7
        !            27:  *     13      fpsr            fp status register
        !            28:  *     14      r4              register 4
        !            29:  *     15      r5              register 5
        !            30:  *     16      r6              register 6
        !            31:  *     17      r7              register 7
        !            32:  *     18      r8              register 8
        !            33:  *     19      r9              register 9
        !            34:  *     20      r10             register 10 (sl)
        !            35:  *     21      r11             register 11 (fp)
        !            36:  *     22      r12             register 12 (ip)
        !            37:  *     23      r13             register 13 (sp)
        !            38:  *     24      r14             register 14 (lr)
        !            39:  *     25      signal mask     (dependant on magic)
        !            40:  *     26      (con't)
        !            41:  *     27      (con't)
        !            42:  *     28      (con't)
        !            43:  *
        !            44:  * The magic number number identifies the jmp_buf and
        !            45:  * how the buffer was created as well as providing
        !            46:  * a sanity check
        !            47:  *
        !            48:  * A side note I should mention - Please do not tamper
        !            49:  * with the floating point fields. While they are
        !            50:  * always saved and restored at the moment this cannot
        !            51:  * be garenteed especially if the compiler happens
        !            52:  * to be generating soft-float code so no fp
        !            53:  * registers will be used.
        !            54:  *
        !            55:  * Whilst this can be seen an encouraging people to
        !            56:  * use the setjmp buffer in this way I think that it
        !            57:  * is for the best then if changes occur compiles will
        !            58:  * break rather than just having new builds falling over
        !            59:  * mysteriously.
        !            60:  */
        !            61:
        !            62: #define _JB_MAGIC__SETJMP      0x4278f500
        !            63: #define _JB_MAGIC_SETJMP       0x4278f501
        !            64:
        !            65: /* Valid for all jmp_buf's */
        !            66:
        !            67: #define _JB_MAGIC               0
        !            68: #define _JB_REG_F4              1
        !            69: #define _JB_REG_F5              4
        !            70: #define _JB_REG_F6              7
        !            71: #define _JB_REG_F7             10
        !            72: #define _JB_REG_FPSR           13
        !            73: #define _JB_REG_R4             14
        !            74: #define _JB_REG_R5             15
        !            75: #define _JB_REG_R6             16
        !            76: #define _JB_REG_R7             17
        !            77: #define _JB_REG_R8             18
        !            78: #define _JB_REG_R9             19
        !            79: #define _JB_REG_R10            20
        !            80: #define _JB_REG_R11            21
        !            81: #define _JB_REG_R12            22
        !            82: #define _JB_REG_R13            23
        !            83: #define _JB_REG_R14            24
        !            84:
        !            85: /* Only valid with the _JB_MAGIC_SETJMP magic */
        !            86:
        !            87: #define _JB_SIGMASK            25

CVSweb