Changeset 37c8975 in mainline


Ignore:
Timestamp:
2006-02-17T11:40:46Z (19 years ago)
Author:
Martin Decky <martin@…>
Branches:
lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
Children:
0e4dd7b
Parents:
ba52899
Message:

fix stupid bug in ppc32 context_save_arch
save only non-volatile registers in context

Files:
2 added
5 edited
1 moved

Legend:

Unmodified
Added
Removed
  • arch/ppc32/boot/boot.S

    rba52899 r37c8975  
    2727#
    2828
    29 #include <asm/macro.h>
     29#include <asm/regname.h>
    3030
    3131.section BOOTSTRAP
  • arch/ppc32/include/asm/regname.h

    rba52899 r37c8975  
    2727 */
    2828
    29 #ifndef __ppc32_MACRO_H__
    30 #define __ppc32_MACRO_H__
     29#ifndef __ppc32_REGNAME_H__
     30#define __ppc32_REGNAME_H__
    3131
    32 /*
    33  * PPC assembler macros
    34  */
    35  
    3632/* Condition Register Bit Fields */
    3733#define cr0     0
     
    8278
    8379/* Floating Point Registers (FPRs) */
    84 #define fr0     0
    85 #define fr1     1
    86 #define fr2     2
    87 #define fr3     3
    88 #define fr4     4
    89 #define fr5     5
    90 #define fr6     6
    91 #define fr7     7
    92 #define fr8     8
    93 #define fr9     9
     80#define fr0             0
     81#define fr1             1
     82#define fr2             2
     83#define fr3             3
     84#define fr4             4
     85#define fr5             5
     86#define fr6             6
     87#define fr7             7
     88#define fr8             8
     89#define fr9             9
    9490#define fr10    10
    9591#define fr11    11
     
    115111#define fr31    31
    116112
    117 #define vr0     0
    118 #define vr1     1
    119 #define vr2     2
    120 #define vr3     3
    121 #define vr4     4
    122 #define vr5     5
    123 #define vr6     6
    124 #define vr7     7
    125 #define vr8     8
    126 #define vr9     9
     113#define vr0             0
     114#define vr1             1
     115#define vr2             2
     116#define vr3             3
     117#define vr4             4
     118#define vr5             5
     119#define vr6             6
     120#define vr7             7
     121#define vr8             8
     122#define vr9             9
    127123#define vr10    10
    128124#define vr11    11
     
    182178
    183179/* Special Purpose Registers (SPRs) */
    184 #define xer     1
    185 #define lr      8
    186 #define ctr     9
    187 #define dec     22
     180#define xer             1
     181#define lr              8
     182#define ctr             9
     183#define dec             22
    188184#define srr0    26
    189185#define srr1    27
     
    192188#define sprg2   274
    193189#define sprg3   275
    194 #define prv     287
    195 
    196 .macro REGISTERS_STORE r
    197         stw r0, 0(\r)
    198         stw r1, 4(\r)
    199         stw r2, 8(\r)
    200         stw r3, 12(\r)
    201         stw r4, 16(\r)
    202         stw r5, 20(\r)
    203         stw r6, 24(\r)
    204         stw r7, 28(\r)
    205         stw r8, 32(\r)
    206         stw r9, 36(\r)
    207         stw r10, 40(\r)
    208         stw r11, 44(\r)
    209         stw r12, 48(\r)
    210         stw r13, 52(\r)
    211         stw r14, 56(\r)
    212         stw r15, 60(\r)
    213         stw r16, 64(\r)
    214         stw r17, 68(\r)
    215         stw r18, 72(\r)
    216         stw r19, 76(\r)
    217         stw r20, 80(\r)
    218         stw r21, 84(\r)
    219         stw r22, 88(\r)
    220         stw r23, 92(\r)
    221         stw r24, 96(\r)
    222         stw r25, 100(\r)
    223         stw r26, 104(\r)
    224         stw r27, 108(\r)
    225         stw r28, 112(\r)
    226         stw r29, 116(\r)
    227         stw r30, 120(\r)
    228         stw r31, 124(\r)
    229 .endm
    230 
    231 .macro REGISTERS_LOAD r
    232         lwz r0, 0(\r)
    233         lwz r1, 4(\r)
    234         lwz r2, 8(\r) 
    235         lwz r3, 12(\r)
    236         lwz r4, 16(\r)
    237         lwz r5, 20(\r)
    238         lwz r6, 24(\r)
    239         lwz r7, 28(\r)
    240         lwz r8, 32(\r)
    241         lwz r9, 36(\r)
    242         lwz r10, 40(\r)
    243         lwz r11, 44(\r)
    244         lwz r12, 48(\r)
    245         lwz r13, 52(\r)
    246         lwz r14, 56(\r)
    247         lwz r15, 60(\r)
    248         lwz r16, 64(\r)
    249         lwz r17, 68(\r)
    250         lwz r18, 72(\r)
    251         lwz r19, 76(\r)
    252         lwz r20, 80(\r)
    253         lwz r21, 84(\r)
    254         lwz r22, 88(\r)
    255         lwz r23, 92(\r)
    256         lwz r24, 96(\r)
    257         lwz r25, 100(\r)
    258         lwz r26, 104(\r)
    259         lwz r27, 108(\r)
    260         lwz r28, 112(\r)
    261         lwz r29, 116(\r)
    262         lwz r30, 120(\r)
    263         lwz r31, 124(\r)
    264 .endm
     190#define prv             287
    265191
    266192#endif
  • arch/ppc32/include/context.h

    rba52899 r37c8975  
    3030#define __ppc32_CONTEXT_H__
    3131
    32 #include <arch/types.h>
     32#ifndef __ppc32_TYPES_H__
     33# include <arch/types.h>
     34#endif
    3335
    34 #define SP_DELTA        8
     36#define SP_DELTA        4
    3537
    3638struct context {
    37         __u32 r0;
    3839        __address sp;
     40        __address pc;
     41       
    3942        __u32 r2;
    40         __u32 r3;
    41         __u32 r4;
    42         __u32 r5;
    43         __u32 r6;
    44         __u32 r7;
    45         __u32 r8;
    46         __u32 r9;
    47         __u32 r10;
    48         __u32 r11;
    49         __u32 r12;
    5043        __u32 r13;
    5144        __u32 r14;
     
    6760        __u32 r30;
    6861        __u32 r31;
    69         __address pc;
     62       
     63        __u32 cr;
     64       
    7065        ipl_t ipl;
    7166} __attribute__ ((packed));
  • arch/ppc32/src/asm.S

    rba52899 r37c8975  
    2727#
    2828
    29 #include <arch/asm/macro.h>
     29#include <arch/asm/regname.h>
    3030
    3131.text
  • arch/ppc32/src/context.S

    rba52899 r37c8975  
    2727#
    2828
    29 #include <arch/asm/macro.h>
     29#include <arch/asm/regname.h>
     30#include <arch/context_offset.h>
    3031
    3132.text   
     
    3435.global context_restore_arch
    3536
     37.macro CONTEXT_STORE r
     38        stw sp, OFFSET_SP(\r)
     39        stw r2, OFFSET_R2(\r)
     40        stw r13, OFFSET_R13(\r)
     41        stw r14, OFFSET_R14(\r)
     42        stw r15, OFFSET_R15(\r)
     43        stw r16, OFFSET_R16(\r)
     44        stw r17, OFFSET_R17(\r)
     45        stw r18, OFFSET_R18(\r)
     46        stw r19, OFFSET_R19(\r)
     47        stw r20, OFFSET_R20(\r)
     48        stw r21, OFFSET_R21(\r)
     49        stw r22, OFFSET_R22(\r)
     50        stw r23, OFFSET_R23(\r)
     51        stw r24, OFFSET_R24(\r)
     52        stw r25, OFFSET_R25(\r)
     53        stw r26, OFFSET_R26(\r)
     54        stw r27, OFFSET_R27(\r)
     55        stw r28, OFFSET_R28(\r)
     56        stw r29, OFFSET_R29(\r)
     57        stw r30, OFFSET_R30(\r)
     58        stw r31, OFFSET_R31(\r)
     59.endm
     60
     61.macro CONTEXT_LOAD r
     62        lwz sp, OFFSET_SP(\r)
     63        lwz r2, OFFSET_R2(\r)
     64        lwz r13, OFFSET_R13(\r)
     65        lwz r14, OFFSET_R14(\r)
     66        lwz r15, OFFSET_R15(\r)
     67        lwz r16, OFFSET_R16(\r)
     68        lwz r17, OFFSET_R17(\r)
     69        lwz r18, OFFSET_R18(\r)
     70        lwz r19, OFFSET_R19(\r)
     71        lwz r20, OFFSET_R20(\r)
     72        lwz r21, OFFSET_R21(\r)
     73        lwz r22, OFFSET_R22(\r)
     74        lwz r23, OFFSET_R23(\r)
     75        lwz r24, OFFSET_R24(\r)
     76        lwz r25, OFFSET_R25(\r)
     77        lwz r26, OFFSET_R26(\r)
     78        lwz r27, OFFSET_R27(\r)
     79        lwz r28, OFFSET_R28(\r)
     80        lwz r29, OFFSET_R29(\r)
     81        lwz r30, OFFSET_R30(\r)
     82        lwz r31, OFFSET_R31(\r)
     83.endm
     84
    3685context_save_arch:
    37         REGISTERS_STORE r3
     86        CONTEXT_STORE r3
    3887       
    39         mflr r3
    40         stw r3, 128(r3)
     88        mflr r4
     89        stw r4, OFFSET_PC(r3)
     90       
     91        mfcr r4
     92        stw r4, OFFSET_CR(r3)
    4193       
    4294        # context_save returns 1
     
    4597       
    4698context_restore_arch:
    47         REGISTERS_LOAD r3
     99        CONTEXT_LOAD r3
    48100       
    49         lwz r3, 128(r3)
    50         mtlr r3
     101        lwz r4, OFFSET_CR(r3)
     102        mtcr r4
     103       
     104        lwz r4, OFFSET_PC(r3)
     105        mtlr r4
    51106       
    52107        # context_restore returns 0
  • arch/ppc32/src/start.S

    rba52899 r37c8975  
    2727#
    2828
    29 #include <arch/asm/macro.h>
     29#include <arch/asm/regname.h>
    3030#include <arch/asm/spr.h>
    3131
Note: See TracChangeset for help on using the changeset viewer.