source: rtems/cpukit/score/cpu/c4x/cpu_asm.S @ 5bb38e15

4.104.115
Last change on this file since 5bb38e15 was 42e243e, checked in by Ralf Corsepius <ralf.corsepius@…>, on 12/04/09 at 04:27:21

Whitespace removal.

  • Property mode set to 100644
File size: 16.4 KB
Line 
1/*  cpu_asm.c  ===> cpu_asm.S or cpu_asm.s
2 *
3 *  This file contains the basic algorithms for all assembly code used
4 *  in an specific CPU port of RTEMS.  These algorithms must be implemented
5 *  in assembly language
6 *
7 *  NOTE:  This is supposed to be a .S or .s file NOT a C file.
8 *
9 *  COPYRIGHT (c) 1989-1999.
10 *  On-Line Applications Research Corporation (OAR).
11 *
12 *  The license and distribution terms for this file may be
13 *  found in the file LICENSE in this distribution or at
14 *  http://www.rtems.com/license/LICENSE.
15 *
16 *  $Id$
17 */
18
19#include <rtems/asm.h>
20
21/*
22 *  _CPU_Context_save_fp_context
23 *
24 *  This routine is responsible for saving the FP context
25 *  at *fp_context_ptr.  If the point to load the FP context
26 *  from is changed then the pointer is modified by this routine.
27 *
28 *  Sometimes a macro implementation of this is in cpu.h which dereferences
29 *  the ** and a similarly named routine in this file is passed something
30 *  like a (Context_Control_fp *).  The general rule on making this decision
31 *  is to avoid writing assembly language.
32 *
33 *  void _CPU_Context_save_fp(
34 *    void **fp_context_ptr
35 *
36 *  C4x Specific Information:
37 *
38 *  There is no distiniction between FP and integer context in this port.
39 */
40
41/*
42 *  _CPU_Context_restore_fp_context
43 *
44 *  This routine is responsible for restoring the FP context
45 *  at *fp_context_ptr.  If the point to load the FP context
46 *  from is changed then the pointer is modified by this routine.
47 *
48 *  Sometimes a macro implementation of this is in cpu.h which dereferences
49 *  the ** and a similarly named routine in this file is passed something
50 *  like a (Context_Control_fp *).  The general rule on making this decision
51 *  is to avoid writing assembly language.
52 *
53 *  void _CPU_Context_restore_fp(
54 *   void **fp_context_ptr
55 *  )
56 *
57 *  C4x Specific Information:
58 *
59 *  There is no distiniction between FP and integer context in this port.
60 */
61
62
63/*  _CPU_Context_switch
64 *
65 *  This routine performs a normal non-FP context switch.
66 *
67 *  void _CPU_Context_switch(
68 *    Context_Control  *run,
69 *    Context_Control  *heir
70 *  )
71 *
72 *  TMS320C3x General-Purpose Applications User's Guide, section 2.4
73 *  (p 2-11 and following), Context Switching in Interrupts and
74 *  Subroutines states that "If the program is in a subroutine, it
75 *  must preserve the dedicated C registers as follows:"
76 *
77 *    Save as Integers                 Save as Floating-Point
78 *    ================                 ======================
79 *      R4   R8                           R6       R7
80 *      AR4  AR5
81 *      AR6  AR7
82 *      FP   DP (small model only)
83 *      SP
84 */
85
86        .global SYM(_CPU_Context_switch)
87SYM(_CPU_Context_switch):
88        .if .REGPARM == 0
89        ldi     sp, ar0
90        ldi     *ar0, ar2       ; get the location of running context
91        .endif
92        sti     st,*ar2++       ; store status word
93        sti     ar3,*ar2++      ; store ar3
94        sti     ar4,*ar2++      ; store ar4
95        sti     ar5,*ar2++      ; store ar5
96        sti     ar6,*ar2++      ; store ar6
97        sti     ar7,*ar2++      ; store ar7
98        sti     r4,*ar2++       ; store integer portion of r4
99        sti     r5,*ar2++       ; store integer portion of r5
100        stf     r6,*ar2++       ; store float portion of r6
101        stf     r7,*ar2++       ; store float portion of r7
102        .if .TMS320C40
103        sti     r8,*ar2++       ; store integer portion of r8
104        .endif
105        sti     sp,*ar2++       ; store sp
106
107        ; end of save
108
109        .if .REGPARM == 0
110        ldi     *-ar0(2), ar2   ; get the location of heir context
111        .else
112        ldi     r2,ar2
113        .endif
114_local_restore:
115        ldi     *ar2++,ar0      ; load status word into register
116        ldi     *ar2++,ar3      ; load ar3
117        ldi     *ar2++,ar4      ; load ar4
118        ldi     *ar2++,ar5      ; load ar5
119        ldi     *ar2++,ar6      ; load ar6
120        ldi     *ar2++,ar7      ; load ar7
121        ldi     *ar2++,r4       ; load integer portion of r4
122        ldi     *ar2++,r5       ; load integer portion of r5
123        ldf     *ar2++,r6       ; load float portion of r6
124        ldf     *ar2++,r7       ; load float portion of r7
125        .if .TMS320C40
126        ldi     *ar2++,r8       ; load integer portion of r8
127        .endif
128        ldi     *ar2++,sp       ; load sp
129        ldi     ar0,st          ; restore status word and interrupts
130        rets
131
132/*
133 *  _CPU_Context_restore
134 *
135 *  This routine is generally used only to restart self in an
136 *  efficient manner.  It may simply be a label in _CPU_Context_switch.
137 *
138 *  NOTE: May be unnecessary to reload some registers.
139 *
140 *  void _CPU_Context_restore(
141 *    Context_Control *new_context
142 *  )
143 */
144
145        .global SYM(_CPU_Context_restore)
146SYM(_CPU_Context_restore):
147        .if .REGPARM == 0
148        ldi     sp, ar0
149        ldi     *ar0, ar2       ; get the location of context to restore
150        .endif
151        br      _local_restore
152
153/*  void _ISR_Handler()
154 *
155 *  This routine provides the RTEMS interrupt management.
156 *
157 *  void _ISR_Handler()
158 */
159
160  /*
161   *  At entry to "common" _ISR_Handler, the vector number must be
162   *  available.  On some CPUs the hardware puts either the vector
163   *  number or the offset into the vector table for this ISR in a
164   *  known place.  If the hardware does not give us this information,
165   *  then the assembly portion of RTEMS for this port will contain
166   *  a set of distinct interrupt entry points which somehow place
167   *  the vector number in a known place (which is safe if another
168   *  interrupt nests this one) and branches to _ISR_Handler.
169   */
170
171  /*
172   *  save some or all context on stack
173   *  may need to save some special interrupt information for exit
174   *
175   *  #if ( CPU_HAS_SOFTWARE_INTERRUPT_STACK == TRUE )
176   *    if ( _ISR_Nest_level == 0 )
177   *      switch to software interrupt stack
178   *  #endif
179   *
180   *  _ISR_Nest_level++;
181   *
182   *  _Thread_Dispatch_disable_level++;
183   *
184   *  (*_ISR_Vector_table[ vector ])( vector );
185   *
186   *  --_ISR_Nest_level;
187   *
188   *  if ( _ISR_Nest_level )
189   *    goto the label "exit interrupt (simple case)"
190   *
191   *  #if ( CPU_HAS_SOFTWARE_INTERRUPT_STACK == TRUE )
192   *    restore stack
193   *  #endif
194   *
195   *  if ( !_Context_Switch_necessary )
196   *    goto the label "exit interrupt (simple case)"
197   *
198   *  if ( !_ISR_Signals_to_thread_executing )
199   *    _ISR_Signals_to_thread_executing = FALSE;
200   *    goto the label "exit interrupt (simple case)"
201   *
202   *  call _Thread_Dispatch() or prepare to return to _ISR_Dispatch
203   *
204   *  prepare to get out of interrupt
205   *  return from interrupt  (maybe to _ISR_Dispatch)
206   *
207   *  LABEL "exit interrupt (simple case):
208   *  prepare to get out of interrupt
209   *  return from interrupt
210   */
211
212        .global SYM(_ISR_Handler_save_registers)
213SYM(_ISR_Handler_save_registers):
214        ; no push st because it is already pushed
215        ; no push ar2 because it is already pushed and vector number loaded
216        push    ar0
217        push    ar1
218        push    dp
219        push    ir0
220        push    ir1
221        push    rs
222        push    re
223        push    rc
224        push    bk
225
226        push    r0
227        pushf   r0
228        push    r1
229        pushf   r1
230        push    r2
231        pushf   r2
232        push    r3
233        pushf   r3
234        ; no push r4 because other part of register is in basic context
235        push    r4
236        pushf   r4
237        ; no push r5 because other part of register is in basic context
238        push    r5
239        pushf   r5
240        push    r6
241        pushf   r6
242        ; no pushf r6 because other part of register is in basic context
243        push    r7
244        pushf   r7
245        ; no pushf r7 because other part of register is in basic context
246        .if .TMS320C40
247        push    r8
248        ; no pushf r8 because other part of register is in basic context
249        push    r9
250        pushf   r9
251        push    r10
252        pushf   r10
253        push    r11
254        pushf   r11
255        .endif
256
257        ldi     sp,r2
258        call    SYM(__ISR_Handler)
259
260        .if .TMS320C40
261        popf    r11
262        pop     r11
263        popf    r10
264        pop     r10
265        popf    r9
266        pop     r9
267        ; no popf r8 because other part of register is in basic context
268        pop     r8
269        .endif
270        ; no popf r7 because other part of register is in basic context
271        popf    r7
272        pop     r7
273        ; no popf r6 because other part of register is in basic context
274        popf    r6
275        pop     r6
276        ; no popf r5 because other part of register is in basic context
277        popf    r5
278        pop     r5
279        ; no pop r4 because other part of register is in basic context
280        popf    r4
281        pop     r4
282        popf    r3
283        pop     r3
284        popf    r2
285        pop     r2
286        popf    r1
287        pop     r1
288        popf    r0
289        pop     r0
290
291        pop     bk
292        pop     rc
293        pop     re
294        pop     rs
295        pop     ir1
296        pop     ir0
297        pop     dp
298        pop     ar1
299        pop     ar0
300        pop     ar2     ; because the vector numbers goes here
301        pop     st
302        reti
303
304/*
305 *  Prologues so we can know the vector number.  Generated by this script:
306 *
307 *    i=0
308 *    while test $i -lt 64
309 *    do
310 *
311 *       printf "\t.global\tSYM(rtems_irq_prologue_%X)\n" $i
312 *       printf "SYM(rtems_irq_prologue_%X):\n" $i
313 *       printf "\tpush\tst\n"
314 *       printf "\tpush\tar2\n"
315 *       printf "\tldi\t0x%x,ar2\n" $i
316 *       printf "\tbr\tSYM(_ISR_Handler_save_registers)\n"
317 *       printf "\n"
318 *       i=`expr $i + 1`
319 *
320 *    done
321 */
322
323        .global SYM(rtems_irq_prologue_0)
324SYM(rtems_irq_prologue_0):
325        push    st
326        push    ar2
327        ldi     0x0,ar2
328        br      SYM(_ISR_Handler_save_registers)
329
330        .global SYM(rtems_irq_prologue_1)
331SYM(rtems_irq_prologue_1):
332        push    st
333        push    ar2
334        ldi     0x1,ar2
335        br      SYM(_ISR_Handler_save_registers)
336
337        .global SYM(rtems_irq_prologue_2)
338SYM(rtems_irq_prologue_2):
339        push    st
340        push    ar2
341        ldi     0x2,ar2
342        br      SYM(_ISR_Handler_save_registers)
343
344        .global SYM(rtems_irq_prologue_3)
345SYM(rtems_irq_prologue_3):
346        push    st
347        push    ar2
348        ldi     0x3,ar2
349        br      SYM(_ISR_Handler_save_registers)
350
351        .global SYM(rtems_irq_prologue_4)
352SYM(rtems_irq_prologue_4):
353        push    st
354        push    ar2
355        ldi     0x4,ar2
356        br      SYM(_ISR_Handler_save_registers)
357
358        .global SYM(rtems_irq_prologue_5)
359SYM(rtems_irq_prologue_5):
360        push    st
361        push    ar2
362        ldi     0x5,ar2
363        br      SYM(_ISR_Handler_save_registers)
364
365        .global SYM(rtems_irq_prologue_6)
366SYM(rtems_irq_prologue_6):
367        push    st
368        push    ar2
369        ldi     0x6,ar2
370        br      SYM(_ISR_Handler_save_registers)
371
372        .global SYM(rtems_irq_prologue_7)
373SYM(rtems_irq_prologue_7):
374        push    st
375        push    ar2
376        ldi     0x7,ar2
377        br      SYM(_ISR_Handler_save_registers)
378
379        .global SYM(rtems_irq_prologue_8)
380SYM(rtems_irq_prologue_8):
381        push    st
382        push    ar2
383        ldi     0x8,ar2
384        br      SYM(_ISR_Handler_save_registers)
385
386        .global SYM(rtems_irq_prologue_9)
387SYM(rtems_irq_prologue_9):
388        push    st
389        push    ar2
390        ldi     0x9,ar2
391        br      SYM(_ISR_Handler_save_registers)
392
393        .global SYM(rtems_irq_prologue_A)
394SYM(rtems_irq_prologue_A):
395        push    st
396        push    ar2
397        ldi     0xa,ar2
398        br      SYM(_ISR_Handler_save_registers)
399
400        .global SYM(rtems_irq_prologue_B)
401SYM(rtems_irq_prologue_B):
402        push    st
403        push    ar2
404        ldi     0xb,ar2
405        br      SYM(_ISR_Handler_save_registers)
406
407        .global SYM(rtems_irq_prologue_C)
408SYM(rtems_irq_prologue_C):
409        push    st
410        push    ar2
411        ldi     0xc,ar2
412        br      SYM(_ISR_Handler_save_registers)
413
414        .global SYM(rtems_irq_prologue_D)
415SYM(rtems_irq_prologue_D):
416        push    st
417        push    ar2
418        ldi     0xd,ar2
419        br      SYM(_ISR_Handler_save_registers)
420
421        .global SYM(rtems_irq_prologue_E)
422SYM(rtems_irq_prologue_E):
423        push    st
424        push    ar2
425        ldi     0xe,ar2
426        br      SYM(_ISR_Handler_save_registers)
427
428        .global SYM(rtems_irq_prologue_F)
429SYM(rtems_irq_prologue_F):
430        push    st
431        push    ar2
432        ldi     0xf,ar2
433        br      SYM(_ISR_Handler_save_registers)
434
435        .global SYM(rtems_irq_prologue_10)
436SYM(rtems_irq_prologue_10):
437        push    st
438        push    ar2
439        ldi     0x10,ar2
440        br      SYM(_ISR_Handler_save_registers)
441
442        .global SYM(rtems_irq_prologue_11)
443SYM(rtems_irq_prologue_11):
444        push    st
445        push    ar2
446        ldi     0x11,ar2
447        br      SYM(_ISR_Handler_save_registers)
448
449        .global SYM(rtems_irq_prologue_12)
450SYM(rtems_irq_prologue_12):
451        push    st
452        push    ar2
453        ldi     0x12,ar2
454        br      SYM(_ISR_Handler_save_registers)
455
456        .global SYM(rtems_irq_prologue_13)
457SYM(rtems_irq_prologue_13):
458        push    st
459        push    ar2
460        ldi     0x13,ar2
461        br      SYM(_ISR_Handler_save_registers)
462
463        .global SYM(rtems_irq_prologue_14)
464SYM(rtems_irq_prologue_14):
465        push    st
466        push    ar2
467        ldi     0x14,ar2
468        br      SYM(_ISR_Handler_save_registers)
469
470        .global SYM(rtems_irq_prologue_15)
471SYM(rtems_irq_prologue_15):
472        push    st
473        push    ar2
474        ldi     0x15,ar2
475        br      SYM(_ISR_Handler_save_registers)
476
477        .global SYM(rtems_irq_prologue_16)
478SYM(rtems_irq_prologue_16):
479        push    st
480        push    ar2
481        ldi     0x16,ar2
482        br      SYM(_ISR_Handler_save_registers)
483
484        .global SYM(rtems_irq_prologue_17)
485SYM(rtems_irq_prologue_17):
486        push    st
487        push    ar2
488        ldi     0x17,ar2
489        br      SYM(_ISR_Handler_save_registers)
490
491        .global SYM(rtems_irq_prologue_18)
492SYM(rtems_irq_prologue_18):
493        push    st
494        push    ar2
495        ldi     0x18,ar2
496        br      SYM(_ISR_Handler_save_registers)
497
498        .global SYM(rtems_irq_prologue_19)
499SYM(rtems_irq_prologue_19):
500        push    st
501        push    ar2
502        ldi     0x19,ar2
503        br      SYM(_ISR_Handler_save_registers)
504
505        .global SYM(rtems_irq_prologue_1A)
506SYM(rtems_irq_prologue_1A):
507        push    st
508        push    ar2
509        ldi     0x1a,ar2
510        br      SYM(_ISR_Handler_save_registers)
511
512        .global SYM(rtems_irq_prologue_1B)
513SYM(rtems_irq_prologue_1B):
514        push    st
515        push    ar2
516        ldi     0x1b,ar2
517        br      SYM(_ISR_Handler_save_registers)
518
519        .global SYM(rtems_irq_prologue_1C)
520SYM(rtems_irq_prologue_1C):
521        push    st
522        push    ar2
523        ldi     0x1c,ar2
524        br      SYM(_ISR_Handler_save_registers)
525
526        .global SYM(rtems_irq_prologue_1D)
527SYM(rtems_irq_prologue_1D):
528        push    st
529        push    ar2
530        ldi     0x1d,ar2
531        br      SYM(_ISR_Handler_save_registers)
532
533        .global SYM(rtems_irq_prologue_1E)
534SYM(rtems_irq_prologue_1E):
535        push    st
536        push    ar2
537        ldi     0x1e,ar2
538        br      SYM(_ISR_Handler_save_registers)
539
540        .global SYM(rtems_irq_prologue_1F)
541SYM(rtems_irq_prologue_1F):
542        push    st
543        push    ar2
544        ldi     0x1f,ar2
545        br      SYM(_ISR_Handler_save_registers)
546
547        .global SYM(rtems_irq_prologue_20)
548SYM(rtems_irq_prologue_20):
549        push    st
550        push    ar2
551        ldi     0x20,ar2
552        br      SYM(_ISR_Handler_save_registers)
553
554        .global SYM(rtems_irq_prologue_21)
555SYM(rtems_irq_prologue_21):
556        push    st
557        push    ar2
558        ldi     0x21,ar2
559        br      SYM(_ISR_Handler_save_registers)
560
561        .global SYM(rtems_irq_prologue_22)
562SYM(rtems_irq_prologue_22):
563        push    st
564        push    ar2
565        ldi     0x22,ar2
566        br      SYM(_ISR_Handler_save_registers)
567
568        .global SYM(rtems_irq_prologue_23)
569SYM(rtems_irq_prologue_23):
570        push    st
571        push    ar2
572        ldi     0x23,ar2
573        br      SYM(_ISR_Handler_save_registers)
574
575        .global SYM(rtems_irq_prologue_24)
576SYM(rtems_irq_prologue_24):
577        push    st
578        push    ar2
579        ldi     0x24,ar2
580        br      SYM(_ISR_Handler_save_registers)
581
582        .global SYM(rtems_irq_prologue_25)
583SYM(rtems_irq_prologue_25):
584        push    st
585        push    ar2
586        ldi     0x25,ar2
587        br      SYM(_ISR_Handler_save_registers)
588
589        .global SYM(rtems_irq_prologue_26)
590SYM(rtems_irq_prologue_26):
591        push    st
592        push    ar2
593        ldi     0x26,ar2
594        br      SYM(_ISR_Handler_save_registers)
595
596        .global SYM(rtems_irq_prologue_27)
597SYM(rtems_irq_prologue_27):
598        push    st
599        push    ar2
600        ldi     0x27,ar2
601        br      SYM(_ISR_Handler_save_registers)
602
603        .global SYM(rtems_irq_prologue_28)
604SYM(rtems_irq_prologue_28):
605        push    st
606        push    ar2
607        ldi     0x28,ar2
608        br      SYM(_ISR_Handler_save_registers)
609
610        .global SYM(rtems_irq_prologue_29)
611SYM(rtems_irq_prologue_29):
612        push    st
613        push    ar2
614        ldi     0x29,ar2
615        br      SYM(_ISR_Handler_save_registers)
616
617        .global SYM(rtems_irq_prologue_2A)
618SYM(rtems_irq_prologue_2A):
619        push    st
620        push    ar2
621        ldi     0x2a,ar2
622        br      SYM(_ISR_Handler_save_registers)
623
624        .global SYM(rtems_irq_prologue_2B)
625SYM(rtems_irq_prologue_2B):
626        push    st
627        push    ar2
628        ldi     0x2b,ar2
629        br      SYM(_ISR_Handler_save_registers)
630
631        .global SYM(rtems_irq_prologue_2C)
632SYM(rtems_irq_prologue_2C):
633        push    st
634        push    ar2
635        ldi     0x2c,ar2
636        br      SYM(_ISR_Handler_save_registers)
637
638        .global SYM(rtems_irq_prologue_2D)
639SYM(rtems_irq_prologue_2D):
640        push    st
641        push    ar2
642        ldi     0x2d,ar2
643        br      SYM(_ISR_Handler_save_registers)
644
645        .global SYM(rtems_irq_prologue_2E)
646SYM(rtems_irq_prologue_2E):
647        push    st
648        push    ar2
649        ldi     0x2e,ar2
650        br      SYM(_ISR_Handler_save_registers)
651
652        .global SYM(rtems_irq_prologue_2F)
653SYM(rtems_irq_prologue_2F):
654        push    st
655        push    ar2
656        ldi     0x2f,ar2
657        br      SYM(_ISR_Handler_save_registers)
658
659        .global SYM(rtems_irq_prologue_30)
660SYM(rtems_irq_prologue_30):
661        push    st
662        push    ar2
663        ldi     0x30,ar2
664        br      SYM(_ISR_Handler_save_registers)
665
666        .global SYM(rtems_irq_prologue_31)
667SYM(rtems_irq_prologue_31):
668        push    st
669        push    ar2
670        ldi     0x31,ar2
671        br      SYM(_ISR_Handler_save_registers)
672
673        .global SYM(rtems_irq_prologue_32)
674SYM(rtems_irq_prologue_32):
675        push    st
676        push    ar2
677        ldi     0x32,ar2
678        br      SYM(_ISR_Handler_save_registers)
679
680        .global SYM(rtems_irq_prologue_33)
681SYM(rtems_irq_prologue_33):
682        push    st
683        push    ar2
684        ldi     0x33,ar2
685        br      SYM(_ISR_Handler_save_registers)
686
687        .global SYM(rtems_irq_prologue_34)
688SYM(rtems_irq_prologue_34):
689        push    st
690        push    ar2
691        ldi     0x34,ar2
692        br      SYM(_ISR_Handler_save_registers)
693
694        .global SYM(rtems_irq_prologue_35)
695SYM(rtems_irq_prologue_35):
696        push    st
697        push    ar2
698        ldi     0x35,ar2
699        br      SYM(_ISR_Handler_save_registers)
700
701        .global SYM(rtems_irq_prologue_36)
702SYM(rtems_irq_prologue_36):
703        push    st
704        push    ar2
705        ldi     0x36,ar2
706        br      SYM(_ISR_Handler_save_registers)
707
708        .global SYM(rtems_irq_prologue_37)
709SYM(rtems_irq_prologue_37):
710        push    st
711        push    ar2
712        ldi     0x37,ar2
713        br      SYM(_ISR_Handler_save_registers)
714
715        .global SYM(rtems_irq_prologue_38)
716SYM(rtems_irq_prologue_38):
717        push    st
718        push    ar2
719        ldi     0x38,ar2
720        br      SYM(_ISR_Handler_save_registers)
721
722        .global SYM(rtems_irq_prologue_39)
723SYM(rtems_irq_prologue_39):
724        push    st
725        push    ar2
726        ldi     0x39,ar2
727        br      SYM(_ISR_Handler_save_registers)
728
729        .global SYM(rtems_irq_prologue_3A)
730SYM(rtems_irq_prologue_3A):
731        push    st
732        push    ar2
733        ldi     0x3a,ar2
734        br      SYM(_ISR_Handler_save_registers)
735
736        .global SYM(rtems_irq_prologue_3B)
737SYM(rtems_irq_prologue_3B):
738        push    st
739        push    ar2
740        ldi     0x3b,ar2
741        br      SYM(_ISR_Handler_save_registers)
742
743        .global SYM(rtems_irq_prologue_3C)
744SYM(rtems_irq_prologue_3C):
745        push    st
746        push    ar2
747        ldi     0x3c,ar2
748        br      SYM(_ISR_Handler_save_registers)
749
750        .global SYM(rtems_irq_prologue_3D)
751SYM(rtems_irq_prologue_3D):
752        push    st
753        push    ar2
754        ldi     0x3d,ar2
755        br      SYM(_ISR_Handler_save_registers)
756
757        .global SYM(rtems_irq_prologue_3E)
758SYM(rtems_irq_prologue_3E):
759        push    st
760        push    ar2
761        ldi     0x3e,ar2
762        br      SYM(_ISR_Handler_save_registers)
763
764        .global SYM(rtems_irq_prologue_3F)
765SYM(rtems_irq_prologue_3F):
766        push    st
767        push    ar2
768        ldi     0x3f,ar2
769        br      SYM(_ISR_Handler_save_registers)
Note: See TracBrowser for help on using the repository browser.