Changeset f799d21 in rtems


Ignore:
Timestamp:
Nov 1, 2002, 9:51:37 PM (18 years ago)
Author:
Joel Sherrill <joel.sherrill@…>
Branches:
4.10, 4.11, 4.8, 4.9, master
Children:
faab731
Parents:
ac45548
Message:

2002-11-01 Joel Sherrill <joel@…>

  • startup/m68k-stub.c: Removed warnings.
Location:
c/src/lib/libbsp/m68k/ods68302
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • c/src/lib/libbsp/m68k/ods68302/ChangeLog

    rac45548 rf799d21  
     12002-11-01      Joel Sherrill <joel@OARcorp.com>
     2
     3        * startup/m68k-stub.c: Removed warnings.
     4
    152002-10-21      Ralf Corsepius <corsepiu@faw.uni-ulm.de>
    26
  • c/src/lib/libbsp/m68k/ods68302/startup/m68k-stub.c

    rac45548 rf799d21  
    259259void return_to_user(void);
    260260
    261 asm("
    262        .text
    263 
    264        .globl return_to_super
    265        .align 4
    266 return_to_super:
    267         movel   registers+60,%sp     /* get new stack pointer */       
    268         movel   lastFrame,%a0        /* get last frame info  */              
    269         bra     return_to_any
    270 
    271         .globl return_to_user
    272         .align 4
    273 
    274 return_to_user:
    275         movel   registers+60,%a0     /* get usp */                         
    276         movel   %a0,%usp             /* set usp */                             
    277         movel   superStack,%sp       /* get original stack pointer */       
    278 
    279 return_to_any:
    280         movel   lastFrame,%a0        /* get last frame info  */             
    281         movel   %a0@+,lastFrame      /* link in previous frame     */       
    282         addql   #8,%a0               /* skip over pc, vector#*/             
    283         movew   %a0@+,%d0            /* get # of words in cpu frame */       
    284         addw    %d0,%a0              /* point to end of data        */       
    285         addw    %d0,%a0              /* point to end of data        */       
    286         movel   %a0,%a1                                                   
    287 #                                                                       
    288 # copy the stack frame                                                 
    289         subql   #1,%d0
    290 
    291 copyUserLoop:                                                               
    292         movew   %a1@-,%sp@-                                               
    293         dbf     %d0,copyUserLoop                                             
    294 ");                                                                     
    295         RESTORE_FP_REGS()                                             
    296 asm("
    297         moveml  registers,%d0-%d7/%a0-%a6
    298         rte                          /* pop and go! */
     261asm("\n\
     262       .text\n\
     263\n\
     264       .globl return_to_super\n\
     265       .align 4\n\
     266return_to_super:\n\
     267        movel   registers+60,%sp     /* get new stack pointer */        \n\
     268        movel   lastFrame,%a0        /* get last frame info  */         \n\
     269        bra     return_to_any\n\
     270\n\
     271        .globl return_to_user\n\
     272        .align 4\n\
     273\n\
     274return_to_user:\n\
     275        movel   registers+60,%a0     /* get usp */                      \n\
     276        movel   %a0,%usp             /* set usp */                              \n\
     277        movel   superStack,%sp       /* get original stack pointer */        \n\
     278\n\
     279return_to_any:\n\
     280        movel   lastFrame,%a0        /* get last frame info  */              \n\
     281        movel   %a0@+,lastFrame      /* link in previous frame     */        \n\
     282        addql   #8,%a0               /* skip over pc, vector#*/              \n\
     283        movew   %a0@+,%d0            /* get # of words in cpu frame */       \n\
     284        addw    %d0,%a0              /* point to end of data        */       \n\
     285        addw    %d0,%a0              /* point to end of data        */       \n\
     286        movel   %a0,%a1                                                   \n\
     287#                                                                       \n\
     288# copy the stack frame                                                  \n\
     289        subql   #1,%d0\n\
     290\n\
     291copyUserLoop:                                                               \n\
     292        movew   %a1@-,%sp@-                                               \n\
     293        dbf     %d0,copyUserLoop                                             \n\
     294");                                                                     \n\
     295        RESTORE_FP_REGS()                                              \n\
     296asm("\n\
     297        moveml  registers,%d0-%d7/%a0-%a6\n\
     298        rte                          /* pop and go! */\n\
    299299");
    300300
     
    306306/* this interrupt and an rte is in order to return to the debugger.    */
    307307/* For the 68000, the offset for sr is 6 due to the jsr return address */
    308 asm("
    309         .text
    310         .globl _debug_level7
    311         .align 4
    312 
    313 _debug_level7:
    314         movew   %d0,%sp@-
     308asm("\n\
     309        .text\n\
     310        .globl _debug_level7\n\
     311        .align 4\n\
     312\n\
     313_debug_level7:\n\
     314        movew   %d0,%sp@-\n\
    315315");
    316316
    317317#if defined(__mc68020__) || defined(__mc68332__)
    318 asm("
    319         movew   %sp@(2),%d0
     318asm("\n\
     319        movew   %sp@(2),%d0\n\
    320320");
    321321#else
    322 asm("
    323         movew   %sp@(6),%d0
     322asm("\n\
     323        movew   %sp@(6),%d0\n\
    324324");
    325325#endif
    326 asm("
    327         andiw   #0x700,%d0
    328           cmpiw   #0x700,%d0
    329           beq     _already7
    330         movew   %sp@+,%d0       
    331         bra     _catchException
    332 _already7:
    333               movew   %sp@+,%d0
     326asm("\n\
     327        andiw   #0x700,%d0\n\
     328          cmpiw   #0x700,%d0\n\
     329          beq     _already7\n\
     330        movew   %sp@+,%d0       \n\
     331        bra     _catchException\n\
     332_already7:\n\
     333              movew   %sp@+,%d0\n\
    334334");
    335335#if defined (__mc68000__) && !defined(__mc68020__)
    336 asm("
    337         lea     %sp@(4),%sp");       /* pull off 68000 return address */
     336asm("\n\
     337        lea     %sp@(4),%sp");       /* pull off 68000 return address */\n\
    338338#endif
    339 asm("
    340         rte
     339asm("\n\
     340        rte\n\
    341341");
    342342
     
    359359 *                                       
    360360 */
    361 asm("
    362         .text
    363 
    364         .globl _catchException
    365         .align 4
    366 _catchException:
     361asm(" \n\
     362        .text\n\
     363\n\
     364        .globl _catchException\n\
     365        .align 4\n\
     366_catchException:\n\
    367367");
    368368
    369369DISABLE_INTERRUPTS();
    370370
    371 asm("
    372         moveml  %d0-%d7/%a0-%a6,registers /* save registers        */
    373         movel   lastFrame,%a0             /* last frame pointer */
     371asm("\n\
     372        moveml  %d0-%d7/%a0-%a6,registers /* save registers        */\n\
     373        movel   lastFrame,%a0             /* last frame pointer */\n\
    374374");
    375375SAVE_FP_REGS();       
    376 asm("
    377         lea     registers,%a5   /* get address of registers     */
    378         movew   %sp@,%d1        /* get status register          */
    379         movew   %d1,%a5@(66)    /* save sr      */     
    380         movel   %sp@(2),%a4     /* save pc in %a4 for later use  */
    381         movel   %a4,%a5@(68)    /* save pc in _regisers[]       */
    382 
    383 #
    384 # figure out how many bytes in the stack frame
    385 #
    386         movew   %sp@(6),%d0         /* get '020 exception format        */
    387         movew   %d0,%d2         /* make a copy of format word   */
    388         andiw   #0xf000,%d0     /* mask off format type         */
    389         rolw    #5,%d0          /* rotate into the low byte *2  */
    390         lea     exceptionSize,%a1   
    391         addw    %d0,%a1         /* index into the table         */
    392         movew   %a1@,%d0        /* get number of words in frame */
    393         movew   %d0,%d3         /* save it                      */
    394         subw    %d0,%a0         /* adjust save pointer          */
    395         subw    %d0,%a0         /* adjust save pointer(bytes)   */
    396         movel   %a0,%a1         /* copy save pointer            */
    397         subql   #1,%d0          /* predecrement loop counter    */
    398 #
    399 # copy the frame
    400 #
    401 saveFrameLoop:
    402               movew   %sp@+,%a1@+
    403         dbf     %d0,saveFrameLoop
    404 #
    405 # now that the stack has been clenaed,
    406 # save the %a7 in use at time of exception
    407 
    408         movel   %sp,superStack  /* save supervisor %sp           */
    409         andiw   #0x2000,%d1     /* were we in supervisor mode ? */
    410         beq     userMode       
    411         movel   %a7,%a5@(60)    /* save %a7                  */
    412         bra     a7saveDone
    413 userMode: 
    414         movel   %usp,%a1       
    415         movel   %a1,%a5@(60)    /* save user stack pointer      */
    416 a7saveDone:
    417 
    418 #
    419 # save size of frame
    420         movew   %d3,%a0@-
    421 
    422 #
    423 # compute exception number
    424         andl    #0xfff,%d2        /* mask off vector offset     */
    425         lsrw    #2,%d2                /* divide by 4 to get vect num    */
    426         movel   %d2,%a0@-       /* save it                      */
    427 #
    428 # save pc causing exception
    429         movel   %a4,%a0@-
    430 #
    431 # save old frame link and set the new value
    432         movel   lastFrame,%a1       /* last frame pointer */
    433         movel   %a1,%a0@-                   /* save pointer to prev frame       */
    434         movel   %a0,lastFrame
    435 
    436         movel   %d2,%sp@-                   /* push exception num           */
    437         movel   exceptionHook,%a0  /* get address of handler */
    438         jbsr    %a0@            /* and call it */
    439         clrl    %sp@            /* replace exception num parm with frame ptr */
    440         jbsr     _returnFromException   /* jbsr, but never returns */
    441 
     376asm("\n\
     377        lea     registers,%a5   /* get address of registers     */\n\
     378        movew   %sp@,%d1        /* get status register          */\n\
     379        movew   %d1,%a5@(66)    /* save sr      */      \n\
     380        movel   %sp@(2),%a4     /* save pc in %a4 for later use  */\n\
     381        movel   %a4,%a5@(68)    /* save pc in _regisers[]       */\n\
     382\n\
     383#\n\
     384# figure out how many bytes in the stack frame\n\
     385#\n\
     386        movew   %sp@(6),%d0         /* get '020 exception format        */\n\
     387        movew   %d0,%d2         /* make a copy of format word   */\n\
     388        andiw   #0xf000,%d0     /* mask off format type         */\n\
     389        rolw    #5,%d0          /* rotate into the low byte *2  */\n\
     390        lea     exceptionSize,%a1   \n\
     391        addw    %d0,%a1         /* index into the table         */\n\
     392        movew   %a1@,%d0        /* get number of words in frame */\n\
     393        movew   %d0,%d3         /* save it                      */\n\
     394        subw    %d0,%a0         /* adjust save pointer          */\n\
     395        subw    %d0,%a0         /* adjust save pointer(bytes)   */\n\
     396        movel   %a0,%a1         /* copy save pointer            */\n\
     397        subql   #1,%d0          /* predecrement loop counter    */\n\
     398#\n\
     399# copy the frame\n\
     400#\n\
     401saveFrameLoop:\n\
     402              movew   %sp@+,%a1@+\n\
     403        dbf     %d0,saveFrameLoop\n\
     404#\n\
     405# now that the stack has been clenaed,\n\
     406# save the %a7 in use at time of exception\n\
     407\n\
     408        movel   %sp,superStack  /* save supervisor %sp           */\n\
     409        andiw   #0x2000,%d1     /* were we in supervisor mode ? */\n\
     410        beq     userMode       \n\
     411        movel   %a7,%a5@(60)    /* save %a7                  */\n\
     412        bra     a7saveDone\n\
     413userMode:  \n\
     414        movel   %usp,%a1        \n\
     415        movel   %a1,%a5@(60)    /* save user stack pointer      */\n\
     416a7saveDone:\n\
     417\n\
     418#\n\
     419# save size of frame\n\
     420        movew   %d3,%a0@-\n\
     421\n\
     422#\n\
     423# compute exception number\n\
     424        andl    #0xfff,%d2        /* mask off vector offset     */\n\
     425        lsrw    #2,%d2                /* divide by 4 to get vect num    */\n\
     426        movel   %d2,%a0@-       /* save it                      */\n\
     427#\n\
     428# save pc causing exception\n\
     429        movel   %a4,%a0@-\n\
     430#\n\
     431# save old frame link and set the new value\n\
     432        movel   lastFrame,%a1       /* last frame pointer */\n\
     433        movel   %a1,%a0@-                   /* save pointer to prev frame       */\n\
     434        movel   %a0,lastFrame\n\
     435\n\
     436        movel   %d2,%sp@-                   /* push exception num           */\n\
     437        movel   exceptionHook,%a0  /* get address of handler */\n\
     438        jbsr    %a0@            /* and call it */\n\
     439        clrl    %sp@            /* replace exception num parm with frame ptr */\n\
     440        jbsr     _returnFromException   /* jbsr, but never returns */\n\
     441\n\
    442442");
    443443
     
    457457 */
    458458asm("
    459         .text
    460         .globl _catchException
    461         .align 4
    462 _catchException:
     459        .text\n\
     460        .globl _catchException\n\
     461        .align 4\n\
     462_catchException:\n\
    463463");
    464464DISABLE_INTERRUPTS();
    465 asm("
    466         moveml  %d0-%d7/%a0-%a6,registers  /* save registers               */
    467         movel   lastFrame,%a0   /* last frame pointer */
     465asm("\n\
     466        moveml  %d0-%d7/%a0-%a6,registers  /* save registers               */\n\
     467        movel   lastFrame,%a0   /* last frame pointer */\n\
    468468");
    469469
    470470SAVE_FP_REGS();       
    471 asm("
    472         moveq.l #0,%d2
    473         movew   %sp@+,%d2
    474         lea     registers,%a5    /* get address of registers     */
    475 
    476         moveql  #3,%d3           /* assume a three word frame     */
    477 
    478         cmpiw   #3,%d2           /* bus error or address error ? */
    479         bgt     normal           /* if >3 then normal error      */
    480         movel   %sp@+,%a0@-      /* copy error info to frame buff*/
    481         movel   %sp@+,%a0@-      /* these are never used         */
    482         moveql  #7,%d3           /* this is a 7 word frame       */
    483      
    484 normal:   
    485         movew   %sp@+,%d1         /* pop status register          */
    486         movel   %sp@+,%a4         /* pop program counter          */
    487 
    488         cmpiw   #33,%d2           /* trap #1, breakpoint ? */
    489         bne     not_breakpoint
    490 
    491         subql   #2,%a4            /* trap leaves the pc after the trap */
    492 
    493 not_breakpoint:
    494         movew   %d1,%a5@(66)      /* save sr                    */     
    495         movel   %a4,%a5@(68)      /* save pc in _regisers[]             */
    496         movel   %a4,%a0@-         /* copy pc to frame buffer      */
    497         movew   %d1,%a0@-         /* copy sr to frame buffer      */
    498 
    499         movel   %sp,superStack    /* save supervisor %sp          */
    500 
    501         andiw   #0x2000,%d1      /* were we in supervisor mode ? */
    502         beq     userMode       
    503         movel   %a7,%a5@(60)      /* save %a7                  */
    504         bra     saveDone             
    505 userMode:
    506         movel   %usp,%a1        /* save user stack pointer      */
    507         movel   %a1,%a5@(60)      /* save user stack pointer    */
    508 saveDone:
    509 
    510         movew   %d3,%a0@-         /* push frame size in words     */
    511         movel   %d2,%a0@-         /* push vector number           */
    512         movel   %a4,%a0@-         /* push exception pc            */
    513 
    514 #
    515 # save old frame link and set the new value
    516 #
    517         movel   lastFrame,%a1   /* last frame pointer */
    518         movel   %a1,%a0@-               /* save pointer to prev frame   */
    519         movel   %a0,lastFrame
    520 
    521         movel   %d2,%sp@-               /* push exception num           */
    522         movel   exceptionHook,%a0  /* get address of handler */
    523 
    524         jbsr    %a0@             /* and call it */
    525         clrl    %sp@             /* replace exception num parm with frame ptr */
    526         jbsr     _returnFromException   /* jbsr, but never returns */
     471asm("\n\
     472        moveq.l #0,%d2\n\
     473        movew   %sp@+,%d2\n\
     474        lea     registers,%a5    /* get address of registers     */\n\
     475\n\
     476        moveql  #3,%d3           /* assume a three word frame     */\n\
     477\n\
     478        cmpiw   #3,%d2           /* bus error or address error ? */\n\
     479        bgt     normal           /* if >3 then normal error      */\n\
     480        movel   %sp@+,%a0@-      /* copy error info to frame buff*/\n\
     481        movel   %sp@+,%a0@-      /* these are never used         */\n\
     482        moveql  #7,%d3           /* this is a 7 word frame       */\n\
     483     \n\
     484normal:   \n\
     485        movew   %sp@+,%d1         /* pop status register          */\n\
     486        movel   %sp@+,%a4         /* pop program counter          */\n\
     487\n\
     488        cmpiw   #33,%d2           /* trap #1, breakpoint ? */\n\
     489        bne     not_breakpoint\n\
     490\n\
     491        subql   #2,%a4            /* trap leaves the pc after the trap */\n\
     492\n\
     493not_breakpoint:\n\
     494        movew   %d1,%a5@(66)      /* save sr                    */      \n\
     495        movel   %a4,%a5@(68)      /* save pc in _regisers[]             */\n\
     496        movel   %a4,%a0@-         /* copy pc to frame buffer      */\n\
     497        movew   %d1,%a0@-         /* copy sr to frame buffer      */\n\
     498\n\
     499        movel   %sp,superStack    /* save supervisor %sp          */\n\
     500\n\
     501        andiw   #0x2000,%d1      /* were we in supervisor mode ? */\n\
     502        beq     userMode       \n\
     503        movel   %a7,%a5@(60)      /* save %a7                  */\n\
     504        bra     saveDone             \n\
     505userMode:\n\
     506        movel   %usp,%a1        /* save user stack pointer      */\n\
     507        movel   %a1,%a5@(60)      /* save user stack pointer    */\n\
     508saveDone:\n\
     509\n\
     510        movew   %d3,%a0@-         /* push frame size in words     */\n\
     511        movel   %d2,%a0@-         /* push vector number           */\n\
     512        movel   %a4,%a0@-         /* push exception pc            */\n\
     513\n\
     514#\n\
     515# save old frame link and set the new value\n\
     516#\n\
     517        movel   lastFrame,%a1   /* last frame pointer */\n\
     518        movel   %a1,%a0@-               /* save pointer to prev frame   */\n\
     519        movel   %a0,lastFrame\n\
     520\n\
     521        movel   %d2,%sp@-               /* push exception num           */\n\
     522        movel   exceptionHook,%a0  /* get address of handler */\n\
     523\n\
     524        jbsr    %a0@             /* and call it */\n\
     525        clrl    %sp@             /* replace exception num parm with frame ptr */\n\
     526        jbsr     _returnFromException   /* jbsr, but never returns */\n\
    527527");
    528528#endif
Note: See TracChangeset for help on using the changeset viewer.