Changeset d53aba3f in mainline


Ignore:
Timestamp:
2005-12-21T23:22:38Z (19 years ago)
Author:
Jakub Jermar <jakub@…>
Branches:
lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
Children:
096d11e5
Parents:
113b98b
Message:

sparc64 work.
Context again. It turns out, according to SCD 2.4, that registers that didn't have to be saved were saved (%o1 - %o5) and
registers that had to be saved were not saved (%i0 - %i5, %l0 - %l7).

Files:
4 edited

Legend:

Unmodified
Added
Removed
  • arch/sparc64/include/context.h

    r113b98b rd53aba3f  
    5656/*
    5757 * Only save registers that must be preserved across
    58  * function calls and that are not saved in caller's
    59  * register window.
     58 * function calls.
    6059 */
    6160struct context {
    62         __u64 o1;
    63         __u64 o2;
    64         __u64 o3;
    65         __u64 o4;
    66         __u64 o5;
    6761        __address sp;           /* %o6 */
    6862        __address pc;           /* %o7 */
     63        __u64 i0;
     64        __u64 i1;
     65        __u64 i2;
     66        __u64 i3;
     67        __u64 i4;
     68        __u64 i5;
    6969        __address fp;           /* %i6 */
    7070        __address i7;
     71        __u64 l0;
     72        __u64 l1;
     73        __u64 l2;
     74        __u64 l3;
     75        __u64 l4;
     76        __u64 l5;
     77        __u64 l6;
     78        __u64 l7;
    7179        ipl_t ipl;
    7280};
  • arch/sparc64/include/context_offset.h

    r113b98b rd53aba3f  
    11/* This file is automatically generated by gencontext.c. */
    22/* struct context */
    3 #define OFFSET_O1  0x0
    4 #define OFFSET_O2  0x8
    5 #define OFFSET_O3  0x10
    6 #define OFFSET_O4  0x18
    7 #define OFFSET_O5  0x20
    8 #define OFFSET_SP  0x28
    9 #define OFFSET_PC  0x30
    10 #define OFFSET_FP  0x38
    11 #define OFFSET_I7  0x40
     3#define OFFSET_SP  0x0
     4#define OFFSET_PC  0x8
     5#define OFFSET_I0  0x10
     6#define OFFSET_I1  0x18
     7#define OFFSET_I2  0x20
     8#define OFFSET_I3  0x28
     9#define OFFSET_I4  0x30
     10#define OFFSET_I5  0x38
     11#define OFFSET_FP  0x40
     12#define OFFSET_I7  0x48
     13#define OFFSET_L0  0x50
     14#define OFFSET_L1  0x58
     15#define OFFSET_L2  0x60
     16#define OFFSET_L3  0x68
     17#define OFFSET_L4  0x70
     18#define OFFSET_L5  0x78
     19#define OFFSET_L6  0x80
     20#define OFFSET_L7  0x88
  • arch/sparc64/src/context.S

    r113b98b rd53aba3f  
    4444
    4545.macro CONTEXT_STORE r
    46         stx %o1, [\r + OFFSET_O1]
    47         stx %o2, [\r + OFFSET_O2]
    48         stx %o3, [\r + OFFSET_O3]
    49         stx %o4, [\r + OFFSET_O4]
    50         stx %o5, [\r + OFFSET_O5]
     46        stx %sp, [\r + OFFSET_SP]
    5147        stx %o7, [\r + OFFSET_PC]
    52         stx %sp, [\r + OFFSET_SP]
     48        stx %i0, [\r + OFFSET_I0]
     49        stx %i1, [\r + OFFSET_I1]
     50        stx %i2, [\r + OFFSET_I2]
     51        stx %i3, [\r + OFFSET_I3]
     52        stx %i4, [\r + OFFSET_I4]
     53        stx %i5, [\r + OFFSET_I5]
    5354        stx %fp, [\r + OFFSET_FP]
    5455        stx %i7, [\r + OFFSET_I7]
     56        stx %l0, [\r + OFFSET_L0]
     57        stx %l1, [\r + OFFSET_L1]
     58        stx %l2, [\r + OFFSET_L2]
     59        stx %l3, [\r + OFFSET_L3]
     60        stx %l4, [\r + OFFSET_L4]
     61        stx %l5, [\r + OFFSET_L5]
     62        stx %l6, [\r + OFFSET_L6]
     63        stx %l7, [\r + OFFSET_L7]
    5564.endm
    5665
    5766.macro CONTEXT_LOAD r
    58         ldx [\r + OFFSET_O1], %o1
    59         ldx [\r + OFFSET_O2], %o2
    60         ldx [\r + OFFSET_O3], %o3
    61         ldx [\r + OFFSET_O4], %o4
    62         ldx [\r + OFFSET_O5], %o5
     67        ldx [\r + OFFSET_SP], %sp
    6368        ldx [\r + OFFSET_PC], %o7
    64         ldx [\r + OFFSET_SP], %sp
     69        ldx [\r + OFFSET_I0], %i0
     70        ldx [\r + OFFSET_I1], %i1
     71        ldx [\r + OFFSET_I2], %i2
     72        ldx [\r + OFFSET_I3], %i3
     73        ldx [\r + OFFSET_I4], %i4
     74        ldx [\r + OFFSET_I5], %i5
    6575        ldx [\r + OFFSET_FP], %fp
    6676        ldx [\r + OFFSET_I7], %i7
     77        ldx [\r + OFFSET_L0], %l0
     78        ldx [\r + OFFSET_L1], %l1
     79        ldx [\r + OFFSET_L2], %l2
     80        ldx [\r + OFFSET_L3], %l3
     81        ldx [\r + OFFSET_L4], %l4
     82        ldx [\r + OFFSET_L5], %l5
     83        ldx [\r + OFFSET_L6], %l6
     84        ldx [\r + OFFSET_L7], %l7
    6785.endm
    6886
  • tools/sparc64/gencontext.c

    r113b98b rd53aba3f  
    2828
    2929        fprintf(f,"/* struct context */\n");
    30         fprintf(f,"#define OFFSET_O1  0x%x\n",((int)&pctx->o1) - (int )pctx);
    31         fprintf(f,"#define OFFSET_O2  0x%x\n",((int)&pctx->o2) - (int )pctx);
    32         fprintf(f,"#define OFFSET_O3  0x%x\n",((int)&pctx->o3) - (int )pctx);
    33         fprintf(f,"#define OFFSET_O4  0x%x\n",((int)&pctx->o4) - (int )pctx);
    34         fprintf(f,"#define OFFSET_O5  0x%x\n",((int)&pctx->o5) - (int )pctx);
    3530        fprintf(f,"#define OFFSET_SP  0x%x\n",((int)&pctx->sp) - (int )pctx);
    3631        fprintf(f,"#define OFFSET_PC  0x%x\n",((int)&pctx->pc) - (int )pctx);
     32        fprintf(f,"#define OFFSET_I0  0x%x\n",((int)&pctx->i0) - (int )pctx);
     33        fprintf(f,"#define OFFSET_I1  0x%x\n",((int)&pctx->i1) - (int )pctx);
     34        fprintf(f,"#define OFFSET_I2  0x%x\n",((int)&pctx->i2) - (int )pctx);
     35        fprintf(f,"#define OFFSET_I3  0x%x\n",((int)&pctx->i3) - (int )pctx);
     36        fprintf(f,"#define OFFSET_I4  0x%x\n",((int)&pctx->i4) - (int )pctx);
     37        fprintf(f,"#define OFFSET_I5  0x%x\n",((int)&pctx->i5) - (int )pctx);
    3738        fprintf(f,"#define OFFSET_FP  0x%x\n",((int)&pctx->fp) - (int )pctx);
     39        fprintf(f,"#define OFFSET_I7  0x%x\n",((int)&pctx->i7) - (int )pctx);
     40        fprintf(f,"#define OFFSET_L0  0x%x\n",((int)&pctx->l0) - (int )pctx);
     41        fprintf(f,"#define OFFSET_L1  0x%x\n",((int)&pctx->l1) - (int )pctx);
     42        fprintf(f,"#define OFFSET_L2  0x%x\n",((int)&pctx->l2) - (int )pctx);
     43        fprintf(f,"#define OFFSET_L3  0x%x\n",((int)&pctx->l3) - (int )pctx);
     44        fprintf(f,"#define OFFSET_L4  0x%x\n",((int)&pctx->l4) - (int )pctx);
     45        fprintf(f,"#define OFFSET_L5  0x%x\n",((int)&pctx->l5) - (int )pctx);
     46        fprintf(f,"#define OFFSET_L6  0x%x\n",((int)&pctx->l6) - (int )pctx);
     47        fprintf(f,"#define OFFSET_L7  0x%x\n",((int)&pctx->l7) - (int )pctx);
    3848
    3949        fclose(f);
Note: See TracChangeset for help on using the changeset viewer.