source: rtems/cpukit/score/cpu/c4x/cpu_asm.S @ 5632f8d

4.104.11
Last change on this file since 5632f8d was 5632f8d, checked in by Joel Sherrill <joel.sherrill@…>, on Mar 27, 2010 at 3:02:21 PM

2010-03-27 Joel Sherrill <joel.sherrill@…>

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