annotate packages/hal/frv/arch/current/src/context.S @ 3292:7f8e529b4d82 default tip

Fix FREESCALE_EDMA_NBYTES_MLOFFYES_MLOFF() so it works with negative offsets.
author vae
date Wed, 29 Apr 2015 23:31:48 +0000
parents 74dbf4c3f2e1
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
208
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
diff changeset
1 // #===========================================================================
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
diff changeset
2 // #
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
diff changeset
3 // # context.S
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
diff changeset
4 // #
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
diff changeset
5 // # FUJITSU context switch code
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
diff changeset
6 // #
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
diff changeset
7 // #===========================================================================
2729
74dbf4c3f2e1 Update all copyright banners to reflect FSF ownership; fix and improve licence text.
jlarmour
parents: 1746
diff changeset
8 // ####ECOSGPLCOPYRIGHTBEGIN####
74dbf4c3f2e1 Update all copyright banners to reflect FSF ownership; fix and improve licence text.
jlarmour
parents: 1746
diff changeset
9 // -------------------------------------------
74dbf4c3f2e1 Update all copyright banners to reflect FSF ownership; fix and improve licence text.
jlarmour
parents: 1746
diff changeset
10 // This file is part of eCos, the Embedded Configurable Operating System.
74dbf4c3f2e1 Update all copyright banners to reflect FSF ownership; fix and improve licence text.
jlarmour
parents: 1746
diff changeset
11 // Copyright (C) 1998, 1999, 2000, 2001, 2002, 2004 Free Software Foundation, Inc.
208
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
diff changeset
12 //
2729
74dbf4c3f2e1 Update all copyright banners to reflect FSF ownership; fix and improve licence text.
jlarmour
parents: 1746
diff changeset
13 // eCos is free software; you can redistribute it and/or modify it under
74dbf4c3f2e1 Update all copyright banners to reflect FSF ownership; fix and improve licence text.
jlarmour
parents: 1746
diff changeset
14 // the terms of the GNU General Public License as published by the Free
74dbf4c3f2e1 Update all copyright banners to reflect FSF ownership; fix and improve licence text.
jlarmour
parents: 1746
diff changeset
15 // Software Foundation; either version 2 or (at your option) any later
74dbf4c3f2e1 Update all copyright banners to reflect FSF ownership; fix and improve licence text.
jlarmour
parents: 1746
diff changeset
16 // version.
208
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
diff changeset
17 //
2729
74dbf4c3f2e1 Update all copyright banners to reflect FSF ownership; fix and improve licence text.
jlarmour
parents: 1746
diff changeset
18 // eCos is distributed in the hope that it will be useful, but WITHOUT
74dbf4c3f2e1 Update all copyright banners to reflect FSF ownership; fix and improve licence text.
jlarmour
parents: 1746
diff changeset
19 // ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
74dbf4c3f2e1 Update all copyright banners to reflect FSF ownership; fix and improve licence text.
jlarmour
parents: 1746
diff changeset
20 // FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
74dbf4c3f2e1 Update all copyright banners to reflect FSF ownership; fix and improve licence text.
jlarmour
parents: 1746
diff changeset
21 // for more details.
208
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
diff changeset
22 //
2729
74dbf4c3f2e1 Update all copyright banners to reflect FSF ownership; fix and improve licence text.
jlarmour
parents: 1746
diff changeset
23 // You should have received a copy of the GNU General Public License
74dbf4c3f2e1 Update all copyright banners to reflect FSF ownership; fix and improve licence text.
jlarmour
parents: 1746
diff changeset
24 // along with eCos; if not, write to the Free Software Foundation, Inc.,
74dbf4c3f2e1 Update all copyright banners to reflect FSF ownership; fix and improve licence text.
jlarmour
parents: 1746
diff changeset
25 // 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
208
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
diff changeset
26 //
2729
74dbf4c3f2e1 Update all copyright banners to reflect FSF ownership; fix and improve licence text.
jlarmour
parents: 1746
diff changeset
27 // As a special exception, if other files instantiate templates or use
74dbf4c3f2e1 Update all copyright banners to reflect FSF ownership; fix and improve licence text.
jlarmour
parents: 1746
diff changeset
28 // macros or inline functions from this file, or you compile this file
74dbf4c3f2e1 Update all copyright banners to reflect FSF ownership; fix and improve licence text.
jlarmour
parents: 1746
diff changeset
29 // and link it with other works to produce a work based on this file,
74dbf4c3f2e1 Update all copyright banners to reflect FSF ownership; fix and improve licence text.
jlarmour
parents: 1746
diff changeset
30 // this file does not by itself cause the resulting work to be covered by
74dbf4c3f2e1 Update all copyright banners to reflect FSF ownership; fix and improve licence text.
jlarmour
parents: 1746
diff changeset
31 // the GNU General Public License. However the source code for this file
74dbf4c3f2e1 Update all copyright banners to reflect FSF ownership; fix and improve licence text.
jlarmour
parents: 1746
diff changeset
32 // must still be made available in accordance with section (3) of the GNU
74dbf4c3f2e1 Update all copyright banners to reflect FSF ownership; fix and improve licence text.
jlarmour
parents: 1746
diff changeset
33 // General Public License v2.
208
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
diff changeset
34 //
2729
74dbf4c3f2e1 Update all copyright banners to reflect FSF ownership; fix and improve licence text.
jlarmour
parents: 1746
diff changeset
35 // This exception does not invalidate any other reasons why a work based
74dbf4c3f2e1 Update all copyright banners to reflect FSF ownership; fix and improve licence text.
jlarmour
parents: 1746
diff changeset
36 // on this file might be covered by the GNU General Public License.
74dbf4c3f2e1 Update all copyright banners to reflect FSF ownership; fix and improve licence text.
jlarmour
parents: 1746
diff changeset
37 // -------------------------------------------
74dbf4c3f2e1 Update all copyright banners to reflect FSF ownership; fix and improve licence text.
jlarmour
parents: 1746
diff changeset
38 // ####ECOSGPLCOPYRIGHTEND####
208
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
diff changeset
39 // #===========================================================================
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
diff changeset
40 // ######DESCRIPTIONBEGIN####
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
diff changeset
41 // #
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
diff changeset
42 // # Author(s): nickg, gthomas
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
diff changeset
43 // # Contributors: nickg, gthomas
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
diff changeset
44 // # Date: 1998-09-15
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
diff changeset
45 // # Purpose: FUJITSU context switch code
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
diff changeset
46 // # Description: This file contains implementations of the thread context
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
diff changeset
47 // # switch routines. It also contains the longjmp() and setjmp()
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
diff changeset
48 // # routines.
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
diff changeset
49 // #
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
diff changeset
50 // #####DESCRIPTIONEND####
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
diff changeset
51 // #
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
diff changeset
52 // #===========================================================================
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
diff changeset
53
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
diff changeset
54 #include <pkgconf/hal.h>
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
diff changeset
55
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
diff changeset
56 #include "frv.inc"
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
diff changeset
57
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
diff changeset
58 .text
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
diff changeset
59
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
diff changeset
60 // ----------------------------------------------------------------------------
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
diff changeset
61 // hal_thread_switch_context(new, old)
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
diff changeset
62 // Switch thread contexts
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
diff changeset
63 // new = address of context of next thread to execute
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
diff changeset
64 // old = address of context save location of current thread
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
diff changeset
65 // thread state is saved on the current stack
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
diff changeset
66
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
diff changeset
67 .globl hal_thread_switch_context
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
diff changeset
68 hal_thread_switch_context:
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
diff changeset
69 subi sp,_TS_size,sp // Space for saved frame
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
diff changeset
70 sti gr2,@(sp,_TS_GPR2) // Save registers
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
diff changeset
71 sti gr3,@(sp,_TS_GPR3)
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
diff changeset
72 sti gr4,@(sp,_TS_GPR4)
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
diff changeset
73 sti gr5,@(sp,_TS_GPR5)
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
diff changeset
74 sti gr6,@(sp,_TS_GPR6)
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
diff changeset
75 sti gr7,@(sp,_TS_GPR7)
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
diff changeset
76 sti gr8,@(sp,_TS_GPR8)
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
diff changeset
77 sti gr9,@(sp,_TS_GPR9)
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
diff changeset
78 sti gr10,@(sp,_TS_GPR10)
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
diff changeset
79 sti gr11,@(sp,_TS_GPR11)
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
diff changeset
80 sti gr12,@(sp,_TS_GPR12)
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
diff changeset
81 sti gr13,@(sp,_TS_GPR13)
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
diff changeset
82 sti gr14,@(sp,_TS_GPR14)
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
diff changeset
83 sti gr15,@(sp,_TS_GPR15)
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
diff changeset
84 sti gr16,@(sp,_TS_GPR16)
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
diff changeset
85 sti gr17,@(sp,_TS_GPR17)
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
diff changeset
86 sti gr18,@(sp,_TS_GPR18)
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
diff changeset
87 sti gr19,@(sp,_TS_GPR19)
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
diff changeset
88 sti gr20,@(sp,_TS_GPR20)
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
diff changeset
89 sti gr21,@(sp,_TS_GPR21)
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
diff changeset
90 sti gr22,@(sp,_TS_GPR22)
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
diff changeset
91 sti gr23,@(sp,_TS_GPR23)
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
diff changeset
92 sti gr24,@(sp,_TS_GPR24)
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
diff changeset
93 sti gr25,@(sp,_TS_GPR25)
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
diff changeset
94 sti gr26,@(sp,_TS_GPR26)
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
diff changeset
95 sti gr27,@(sp,_TS_GPR27)
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
diff changeset
96 sti gr28,@(sp,_TS_GPR28)
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
diff changeset
97 sti gr29,@(sp,_TS_GPR29)
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
diff changeset
98 sti gr30,@(sp,_TS_GPR30)
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
diff changeset
99 sti gr31,@(sp,_TS_GPR31)
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
diff changeset
100 #if _NGPR != 32
1746
f8c5906d7c6e Add FR-V ports for MB9309x boards.
msalter
parents: 210
diff changeset
101 #ifdef CYGINT_HAL_FRV_ARCH_FR400
f8c5906d7c6e Add FR-V ports for MB9309x boards.
msalter
parents: 210
diff changeset
102 movsg HSR0,gr5
f8c5906d7c6e Add FR-V ports for MB9309x boards.
msalter
parents: 210
diff changeset
103 srli gr5,#10,gr5
f8c5906d7c6e Add FR-V ports for MB9309x boards.
msalter
parents: 210
diff changeset
104 andicc gr5,#1,gr0,icc0
f8c5906d7c6e Add FR-V ports for MB9309x boards.
msalter
parents: 210
diff changeset
105 bne icc0,0,1f
f8c5906d7c6e Add FR-V ports for MB9309x boards.
msalter
parents: 210
diff changeset
106 #endif
208
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
diff changeset
107 sti gr32,@(sp,_TS_GPR32)
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
diff changeset
108 sti gr33,@(sp,_TS_GPR33)
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
diff changeset
109 sti gr34,@(sp,_TS_GPR34)
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
diff changeset
110 sti gr35,@(sp,_TS_GPR35)
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
diff changeset
111 sti gr36,@(sp,_TS_GPR36)
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
diff changeset
112 sti gr37,@(sp,_TS_GPR37)
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
diff changeset
113 sti gr38,@(sp,_TS_GPR38)
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
diff changeset
114 sti gr39,@(sp,_TS_GPR39)
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
diff changeset
115 sti gr40,@(sp,_TS_GPR40)
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
diff changeset
116 sti gr41,@(sp,_TS_GPR41)
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
diff changeset
117 sti gr42,@(sp,_TS_GPR42)
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
diff changeset
118 sti gr43,@(sp,_TS_GPR43)
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
diff changeset
119 sti gr44,@(sp,_TS_GPR44)
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
diff changeset
120 sti gr45,@(sp,_TS_GPR45)
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
diff changeset
121 sti gr46,@(sp,_TS_GPR46)
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
diff changeset
122 sti gr47,@(sp,_TS_GPR47)
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
diff changeset
123 sti gr48,@(sp,_TS_GPR48)
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
diff changeset
124 sti gr49,@(sp,_TS_GPR49)
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
diff changeset
125 sti gr50,@(sp,_TS_GPR50)
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
diff changeset
126 sti gr51,@(sp,_TS_GPR51)
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
diff changeset
127 sti gr52,@(sp,_TS_GPR52)
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
diff changeset
128 sti gr53,@(sp,_TS_GPR53)
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
diff changeset
129 sti gr54,@(sp,_TS_GPR54)
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
diff changeset
130 sti gr55,@(sp,_TS_GPR55)
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
diff changeset
131 sti gr56,@(sp,_TS_GPR56)
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
diff changeset
132 sti gr57,@(sp,_TS_GPR57)
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
diff changeset
133 sti gr58,@(sp,_TS_GPR58)
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
diff changeset
134 sti gr59,@(sp,_TS_GPR59)
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
diff changeset
135 sti gr60,@(sp,_TS_GPR60)
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
diff changeset
136 sti gr61,@(sp,_TS_GPR61)
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
diff changeset
137 sti gr62,@(sp,_TS_GPR62)
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
diff changeset
138 sti gr63,@(sp,_TS_GPR63)
1746
f8c5906d7c6e Add FR-V ports for MB9309x boards.
msalter
parents: 210
diff changeset
139 1:
208
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
diff changeset
140 #endif
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
diff changeset
141 movsg psr,gr4
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
diff changeset
142 sti gr4,@(sp,_TS_PSR)
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
diff changeset
143 movsg lr,gr4
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
diff changeset
144 sti gr4,@(sp,_TS_PC)
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
diff changeset
145 movsg ccr,gr4
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
diff changeset
146 sti gr4,@(sp,_TS_CCR)
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
diff changeset
147 movsg lcr,gr4
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
diff changeset
148 sti gr4,@(sp,_TS_LCR)
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
diff changeset
149 movsg cccr,gr4
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
diff changeset
150 sti gr4,@(sp,_TS_CCCR)
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
diff changeset
151 addi sp,_TS_size,gr4
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
diff changeset
152 sti gr4,@(sp,_TS_SP)
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
diff changeset
153 sti sp,@(gr9,0) // Pointer to saved context
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
diff changeset
154
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
diff changeset
155 # Now load the destination thread by dropping through
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
diff changeset
156 # to hal_thread_load_context
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
diff changeset
157
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
diff changeset
158 // ----------------------------------------------------------------------------
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
diff changeset
159 // hal_thread_load_context(new)
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
diff changeset
160 // Load thread context
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
diff changeset
161 // new = address of context of next thread to execute
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
diff changeset
162 // Note that this function is also the second half of
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
diff changeset
163 // hal_thread_switch_context and is simply dropped into from it.
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
diff changeset
164
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
diff changeset
165 .globl hal_thread_load_context
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
diff changeset
166 hal_thread_load_context:
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
diff changeset
167 ldi @(gr8,0),sp // Saved context
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
diff changeset
168 ldi @(sp,_TS_PSR),gr8
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
diff changeset
169 setlos #~_PSR_ET,gr9 // Turn off exceptions
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
diff changeset
170 and gr8,gr9,gr8
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
diff changeset
171 setlos #_PSR_PS|_PSR_S,gr9 // Stay in supervisor mode
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
diff changeset
172 or gr8,gr9,gr8
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
diff changeset
173 movgs gr8,psr
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
diff changeset
174 ldi @(sp,_TS_PC),gr8
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
diff changeset
175 movgs gr8,pcsr
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
diff changeset
176 ldi @(sp,_TS_CCR),gr8
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
diff changeset
177 movgs gr8,ccr
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
diff changeset
178 ldi @(sp,_TS_LCR),gr8
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
diff changeset
179 movgs gr8,lcr
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
diff changeset
180 ldi @(sp,_TS_CCCR),gr8
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
diff changeset
181 movgs gr8,cccr
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
diff changeset
182 #if _NGPR != 32
1746
f8c5906d7c6e Add FR-V ports for MB9309x boards.
msalter
parents: 210
diff changeset
183 #ifdef CYGINT_HAL_FRV_ARCH_FR400
f8c5906d7c6e Add FR-V ports for MB9309x boards.
msalter
parents: 210
diff changeset
184 movsg HSR0,gr5
f8c5906d7c6e Add FR-V ports for MB9309x boards.
msalter
parents: 210
diff changeset
185 srli gr5,#10,gr5
f8c5906d7c6e Add FR-V ports for MB9309x boards.
msalter
parents: 210
diff changeset
186 andicc gr5,#1,gr0,icc0
f8c5906d7c6e Add FR-V ports for MB9309x boards.
msalter
parents: 210
diff changeset
187 bne icc0,0,1f
f8c5906d7c6e Add FR-V ports for MB9309x boards.
msalter
parents: 210
diff changeset
188 #endif
208
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
diff changeset
189 ldi @(sp,_TS_GPR32),gr32
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
diff changeset
190 ldi @(sp,_TS_GPR33),gr33
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
diff changeset
191 ldi @(sp,_TS_GPR34),gr34
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
diff changeset
192 ldi @(sp,_TS_GPR35),gr35
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
diff changeset
193 ldi @(sp,_TS_GPR36),gr36
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
diff changeset
194 ldi @(sp,_TS_GPR37),gr37
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
diff changeset
195 ldi @(sp,_TS_GPR38),gr38
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
diff changeset
196 ldi @(sp,_TS_GPR39),gr39
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
diff changeset
197 ldi @(sp,_TS_GPR40),gr40
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
diff changeset
198 ldi @(sp,_TS_GPR41),gr41
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
diff changeset
199 ldi @(sp,_TS_GPR42),gr42
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
diff changeset
200 ldi @(sp,_TS_GPR43),gr43
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
diff changeset
201 ldi @(sp,_TS_GPR44),gr44
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
diff changeset
202 ldi @(sp,_TS_GPR45),gr45
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
diff changeset
203 ldi @(sp,_TS_GPR46),gr46
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
diff changeset
204 ldi @(sp,_TS_GPR47),gr47
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
diff changeset
205 ldi @(sp,_TS_GPR48),gr48
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
diff changeset
206 ldi @(sp,_TS_GPR49),gr49
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
diff changeset
207 ldi @(sp,_TS_GPR50),gr50
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
diff changeset
208 ldi @(sp,_TS_GPR51),gr51
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
diff changeset
209 ldi @(sp,_TS_GPR52),gr52
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
diff changeset
210 ldi @(sp,_TS_GPR53),gr53
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
diff changeset
211 ldi @(sp,_TS_GPR54),gr54
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
diff changeset
212 ldi @(sp,_TS_GPR55),gr55
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
diff changeset
213 ldi @(sp,_TS_GPR56),gr56
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
diff changeset
214 ldi @(sp,_TS_GPR57),gr57
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
diff changeset
215 ldi @(sp,_TS_GPR58),gr58
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
diff changeset
216 ldi @(sp,_TS_GPR59),gr59
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
diff changeset
217 ldi @(sp,_TS_GPR60),gr60
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
diff changeset
218 ldi @(sp,_TS_GPR61),gr61
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
diff changeset
219 ldi @(sp,_TS_GPR62),gr62
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
diff changeset
220 ldi @(sp,_TS_GPR63),gr63
1746
f8c5906d7c6e Add FR-V ports for MB9309x boards.
msalter
parents: 210
diff changeset
221 1:
208
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
diff changeset
222 #endif
1746
f8c5906d7c6e Add FR-V ports for MB9309x boards.
msalter
parents: 210
diff changeset
223 ldi @(sp,_TS_GPR2),gr2 // Restore registers
f8c5906d7c6e Add FR-V ports for MB9309x boards.
msalter
parents: 210
diff changeset
224 ldi @(sp,_TS_GPR3),gr3
f8c5906d7c6e Add FR-V ports for MB9309x boards.
msalter
parents: 210
diff changeset
225 ldi @(sp,_TS_GPR4),gr4
f8c5906d7c6e Add FR-V ports for MB9309x boards.
msalter
parents: 210
diff changeset
226 ldi @(sp,_TS_GPR5),gr5
f8c5906d7c6e Add FR-V ports for MB9309x boards.
msalter
parents: 210
diff changeset
227 ldi @(sp,_TS_GPR6),gr6
f8c5906d7c6e Add FR-V ports for MB9309x boards.
msalter
parents: 210
diff changeset
228 ldi @(sp,_TS_GPR7),gr7
f8c5906d7c6e Add FR-V ports for MB9309x boards.
msalter
parents: 210
diff changeset
229 ldi @(sp,_TS_GPR8),gr8
f8c5906d7c6e Add FR-V ports for MB9309x boards.
msalter
parents: 210
diff changeset
230 ldi @(sp,_TS_GPR9),gr9
f8c5906d7c6e Add FR-V ports for MB9309x boards.
msalter
parents: 210
diff changeset
231 ldi @(sp,_TS_GPR10),gr10
f8c5906d7c6e Add FR-V ports for MB9309x boards.
msalter
parents: 210
diff changeset
232 ldi @(sp,_TS_GPR11),gr11
f8c5906d7c6e Add FR-V ports for MB9309x boards.
msalter
parents: 210
diff changeset
233 ldi @(sp,_TS_GPR12),gr12
f8c5906d7c6e Add FR-V ports for MB9309x boards.
msalter
parents: 210
diff changeset
234 ldi @(sp,_TS_GPR13),gr13
f8c5906d7c6e Add FR-V ports for MB9309x boards.
msalter
parents: 210
diff changeset
235 ldi @(sp,_TS_GPR14),gr14
f8c5906d7c6e Add FR-V ports for MB9309x boards.
msalter
parents: 210
diff changeset
236 ldi @(sp,_TS_GPR15),gr15
f8c5906d7c6e Add FR-V ports for MB9309x boards.
msalter
parents: 210
diff changeset
237 ldi @(sp,_TS_GPR16),gr16
f8c5906d7c6e Add FR-V ports for MB9309x boards.
msalter
parents: 210
diff changeset
238 ldi @(sp,_TS_GPR17),gr17
f8c5906d7c6e Add FR-V ports for MB9309x boards.
msalter
parents: 210
diff changeset
239 ldi @(sp,_TS_GPR18),gr18
f8c5906d7c6e Add FR-V ports for MB9309x boards.
msalter
parents: 210
diff changeset
240 ldi @(sp,_TS_GPR19),gr19
f8c5906d7c6e Add FR-V ports for MB9309x boards.
msalter
parents: 210
diff changeset
241 ldi @(sp,_TS_GPR20),gr20
f8c5906d7c6e Add FR-V ports for MB9309x boards.
msalter
parents: 210
diff changeset
242 ldi @(sp,_TS_GPR21),gr21
f8c5906d7c6e Add FR-V ports for MB9309x boards.
msalter
parents: 210
diff changeset
243 ldi @(sp,_TS_GPR22),gr22
f8c5906d7c6e Add FR-V ports for MB9309x boards.
msalter
parents: 210
diff changeset
244 ldi @(sp,_TS_GPR23),gr23
f8c5906d7c6e Add FR-V ports for MB9309x boards.
msalter
parents: 210
diff changeset
245 ldi @(sp,_TS_GPR24),gr24
f8c5906d7c6e Add FR-V ports for MB9309x boards.
msalter
parents: 210
diff changeset
246 ldi @(sp,_TS_GPR25),gr25
f8c5906d7c6e Add FR-V ports for MB9309x boards.
msalter
parents: 210
diff changeset
247 ldi @(sp,_TS_GPR26),gr26
f8c5906d7c6e Add FR-V ports for MB9309x boards.
msalter
parents: 210
diff changeset
248 ldi @(sp,_TS_GPR27),gr27
f8c5906d7c6e Add FR-V ports for MB9309x boards.
msalter
parents: 210
diff changeset
249 ldi @(sp,_TS_GPR28),gr28
f8c5906d7c6e Add FR-V ports for MB9309x boards.
msalter
parents: 210
diff changeset
250 ldi @(sp,_TS_GPR29),gr29
f8c5906d7c6e Add FR-V ports for MB9309x boards.
msalter
parents: 210
diff changeset
251 ldi @(sp,_TS_GPR30),gr30
f8c5906d7c6e Add FR-V ports for MB9309x boards.
msalter
parents: 210
diff changeset
252 ldi @(sp,_TS_GPR31),gr31
208
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
diff changeset
253 ldi @(sp,_TS_SP),sp
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
diff changeset
254 rett #0
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
diff changeset
255
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
diff changeset
256 // ----------------------------------------------------------------------------
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
diff changeset
257 // HAL longjmp, setjmp implementations - based on newlib
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
diff changeset
258 // Register jmpbuf offset
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
diff changeset
259 // R16-R31 0x0-0x03c
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
diff changeset
260 // R48-R63 0x40-0x7c
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
diff changeset
261 // FR16-FR31 0x80-0xbc
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
diff changeset
262 // FR48-FR63 0xc0-0xfc
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
diff changeset
263 // LR 0x100
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
diff changeset
264 // SP 0x104
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
diff changeset
265 // FP 0x108
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
diff changeset
266 //
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
diff changeset
267 // R8 contains the pointer to jmpbuf
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
diff changeset
268
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
diff changeset
269 .text
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
diff changeset
270 .global hal_setjmp
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
diff changeset
271 .type hal_setjmp,@function
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
diff changeset
272 hal_setjmp:
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
diff changeset
273 stdi gr16, @(gr8,0)
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
diff changeset
274 stdi gr18, @(gr8,8)
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
diff changeset
275 stdi gr20, @(gr8,16)
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
diff changeset
276 stdi gr22, @(gr8,24)
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
diff changeset
277 stdi gr24, @(gr8,32)
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
diff changeset
278 stdi gr26, @(gr8,40)
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
diff changeset
279 stdi gr28, @(gr8,48)
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
diff changeset
280 stdi gr30, @(gr8,56)
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
diff changeset
281 #if _NGPR != 32
1746
f8c5906d7c6e Add FR-V ports for MB9309x boards.
msalter
parents: 210
diff changeset
282 #ifdef CYGINT_HAL_FRV_ARCH_FR400
f8c5906d7c6e Add FR-V ports for MB9309x boards.
msalter
parents: 210
diff changeset
283 movsg HSR0,gr5
f8c5906d7c6e Add FR-V ports for MB9309x boards.
msalter
parents: 210
diff changeset
284 srli gr5,#10,gr5
f8c5906d7c6e Add FR-V ports for MB9309x boards.
msalter
parents: 210
diff changeset
285 andicc gr5,#1,gr0,icc0
f8c5906d7c6e Add FR-V ports for MB9309x boards.
msalter
parents: 210
diff changeset
286 bne icc0,0,1f
f8c5906d7c6e Add FR-V ports for MB9309x boards.
msalter
parents: 210
diff changeset
287 #endif
208
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
diff changeset
288 stdi gr48, @(gr8,64)
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
diff changeset
289 stdi gr50, @(gr8,72)
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
diff changeset
290 stdi gr52, @(gr8,80)
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
diff changeset
291 stdi gr54, @(gr8,88)
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
diff changeset
292 stdi gr56, @(gr8,96)
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
diff changeset
293 stdi gr58, @(gr8,104)
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
diff changeset
294 stdi gr60, @(gr8,112)
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
diff changeset
295 stdi gr62, @(gr8,120)
1746
f8c5906d7c6e Add FR-V ports for MB9309x boards.
msalter
parents: 210
diff changeset
296 1:
208
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
diff changeset
297 #endif
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
diff changeset
298
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
diff changeset
299 #if _NFPR != 0
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
diff changeset
300 stdfi fr16, @(gr8,128)
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
diff changeset
301 stdfi fr18, @(gr8,136)
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
diff changeset
302 stdfi fr20, @(gr8,144)
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
diff changeset
303 stdfi fr22, @(gr8,152)
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
diff changeset
304 stdfi fr24, @(gr8,160)
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
diff changeset
305 stdfi fr26, @(gr8,168)
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
diff changeset
306 stdfi fr28, @(gr8,176)
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
diff changeset
307 stdfi fr30, @(gr8,184)
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
diff changeset
308 #if _NFPR != 32
1746
f8c5906d7c6e Add FR-V ports for MB9309x boards.
msalter
parents: 210
diff changeset
309 #ifdef CYGINT_HAL_FRV_ARCH_FR400
f8c5906d7c6e Add FR-V ports for MB9309x boards.
msalter
parents: 210
diff changeset
310 movsg HSR0,gr5
f8c5906d7c6e Add FR-V ports for MB9309x boards.
msalter
parents: 210
diff changeset
311 srli gr5,#11,gr5
f8c5906d7c6e Add FR-V ports for MB9309x boards.
msalter
parents: 210
diff changeset
312 andicc gr5,#1,gr0,icc0
f8c5906d7c6e Add FR-V ports for MB9309x boards.
msalter
parents: 210
diff changeset
313 bne icc0,0,1f
f8c5906d7c6e Add FR-V ports for MB9309x boards.
msalter
parents: 210
diff changeset
314 #endif
208
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
diff changeset
315 stdfi fr48, @(gr8,192)
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
diff changeset
316 stdfi fr50, @(gr8,200)
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
diff changeset
317 stdfi fr52, @(gr8,208)
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
diff changeset
318 stdfi fr54, @(gr8,216)
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
diff changeset
319 stdfi fr56, @(gr8,224)
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
diff changeset
320 stdfi fr58, @(gr8,232)
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
diff changeset
321 stdfi fr60, @(gr8,240)
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
diff changeset
322 stdfi fr62, @(gr8,248)
1746
f8c5906d7c6e Add FR-V ports for MB9309x boards.
msalter
parents: 210
diff changeset
323 1:
208
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
diff changeset
324 #endif
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
diff changeset
325 #endif
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
diff changeset
326
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
diff changeset
327 movsg lr, gr4
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
diff changeset
328 sti gr4, @(gr8,256)
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
diff changeset
329 sti sp, @(gr8,260)
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
diff changeset
330 sti fp, @(gr8,264)
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
diff changeset
331
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
diff changeset
332 mov gr0,gr8
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
diff changeset
333 ret
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
diff changeset
334 .Lend1:
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
diff changeset
335 .size hal_setjmp,.Lend1-hal_setjmp
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
diff changeset
336
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
diff changeset
337 .global hal_longjmp
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
diff changeset
338 .type hal_longjmp,@function
1746
f8c5906d7c6e Add FR-V ports for MB9309x boards.
msalter
parents: 210
diff changeset
339 hal_longjmp:
208
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
diff changeset
340 #if _NFPR != 0
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
diff changeset
341 lddfi @(gr8,128), fr16
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
diff changeset
342 lddfi @(gr8,136), fr18
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
diff changeset
343 lddfi @(gr8,144), fr20
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
diff changeset
344 lddfi @(gr8,152), fr22
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
diff changeset
345 lddfi @(gr8,160), fr24
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
diff changeset
346 lddfi @(gr8,168), fr26
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
diff changeset
347 lddfi @(gr8,176), fr28
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
diff changeset
348 lddfi @(gr8,184), fr30
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
diff changeset
349 #if _NFPR != 32
1746
f8c5906d7c6e Add FR-V ports for MB9309x boards.
msalter
parents: 210
diff changeset
350 #ifdef CYGINT_HAL_FRV_ARCH_FR400
f8c5906d7c6e Add FR-V ports for MB9309x boards.
msalter
parents: 210
diff changeset
351 movsg HSR0,gr5
f8c5906d7c6e Add FR-V ports for MB9309x boards.
msalter
parents: 210
diff changeset
352 srli gr5,#11,gr5
f8c5906d7c6e Add FR-V ports for MB9309x boards.
msalter
parents: 210
diff changeset
353 andicc gr5,#1,gr0,icc0
f8c5906d7c6e Add FR-V ports for MB9309x boards.
msalter
parents: 210
diff changeset
354 bne icc0,0,1f
f8c5906d7c6e Add FR-V ports for MB9309x boards.
msalter
parents: 210
diff changeset
355 #endif
208
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
diff changeset
356 lddfi @(gr8,192), fr48
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
diff changeset
357 lddfi @(gr8,200), fr50
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
diff changeset
358 lddfi @(gr8,208), fr52
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
diff changeset
359 lddfi @(gr8,216), fr54
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
diff changeset
360 lddfi @(gr8,224), fr56
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
diff changeset
361 lddfi @(gr8,232), fr58
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
diff changeset
362 lddfi @(gr8,240), fr60
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
diff changeset
363 lddfi @(gr8,248), fr62
1746
f8c5906d7c6e Add FR-V ports for MB9309x boards.
msalter
parents: 210
diff changeset
364 1:
208
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
diff changeset
365 #endif
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
diff changeset
366 #endif
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
diff changeset
367
1746
f8c5906d7c6e Add FR-V ports for MB9309x boards.
msalter
parents: 210
diff changeset
368 #if _NGPR != 32
f8c5906d7c6e Add FR-V ports for MB9309x boards.
msalter
parents: 210
diff changeset
369 #ifdef CYGINT_HAL_FRV_ARCH_FR400
f8c5906d7c6e Add FR-V ports for MB9309x boards.
msalter
parents: 210
diff changeset
370 movsg HSR0,gr5
f8c5906d7c6e Add FR-V ports for MB9309x boards.
msalter
parents: 210
diff changeset
371 srli gr5,#10,gr5
f8c5906d7c6e Add FR-V ports for MB9309x boards.
msalter
parents: 210
diff changeset
372 andicc gr5,#1,gr0,icc0
f8c5906d7c6e Add FR-V ports for MB9309x boards.
msalter
parents: 210
diff changeset
373 bne icc0,0,1f
f8c5906d7c6e Add FR-V ports for MB9309x boards.
msalter
parents: 210
diff changeset
374 #endif
f8c5906d7c6e Add FR-V ports for MB9309x boards.
msalter
parents: 210
diff changeset
375 lddi @(gr8,64), gr48
f8c5906d7c6e Add FR-V ports for MB9309x boards.
msalter
parents: 210
diff changeset
376 lddi @(gr8,72), gr50
f8c5906d7c6e Add FR-V ports for MB9309x boards.
msalter
parents: 210
diff changeset
377 lddi @(gr8,80), gr52
f8c5906d7c6e Add FR-V ports for MB9309x boards.
msalter
parents: 210
diff changeset
378 lddi @(gr8,88), gr54
f8c5906d7c6e Add FR-V ports for MB9309x boards.
msalter
parents: 210
diff changeset
379 lddi @(gr8,96), gr56
f8c5906d7c6e Add FR-V ports for MB9309x boards.
msalter
parents: 210
diff changeset
380 lddi @(gr8,104), gr58
f8c5906d7c6e Add FR-V ports for MB9309x boards.
msalter
parents: 210
diff changeset
381 lddi @(gr8,112), gr60
f8c5906d7c6e Add FR-V ports for MB9309x boards.
msalter
parents: 210
diff changeset
382 lddi @(gr8,120), gr62
f8c5906d7c6e Add FR-V ports for MB9309x boards.
msalter
parents: 210
diff changeset
383 1:
f8c5906d7c6e Add FR-V ports for MB9309x boards.
msalter
parents: 210
diff changeset
384 #endif
f8c5906d7c6e Add FR-V ports for MB9309x boards.
msalter
parents: 210
diff changeset
385 lddi @(gr8,0), gr16
f8c5906d7c6e Add FR-V ports for MB9309x boards.
msalter
parents: 210
diff changeset
386 lddi @(gr8,8), gr18
f8c5906d7c6e Add FR-V ports for MB9309x boards.
msalter
parents: 210
diff changeset
387 lddi @(gr8,16), gr20
f8c5906d7c6e Add FR-V ports for MB9309x boards.
msalter
parents: 210
diff changeset
388 lddi @(gr8,24), gr22
f8c5906d7c6e Add FR-V ports for MB9309x boards.
msalter
parents: 210
diff changeset
389 lddi @(gr8,32), gr24
f8c5906d7c6e Add FR-V ports for MB9309x boards.
msalter
parents: 210
diff changeset
390 lddi @(gr8,40), gr26
f8c5906d7c6e Add FR-V ports for MB9309x boards.
msalter
parents: 210
diff changeset
391 lddi @(gr8,48), gr28
f8c5906d7c6e Add FR-V ports for MB9309x boards.
msalter
parents: 210
diff changeset
392 lddi @(gr8,56), gr30
f8c5906d7c6e Add FR-V ports for MB9309x boards.
msalter
parents: 210
diff changeset
393
f8c5906d7c6e Add FR-V ports for MB9309x boards.
msalter
parents: 210
diff changeset
394
208
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
diff changeset
395 ldi @(gr8,256), gr4
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
diff changeset
396 movgs gr4,lr
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
diff changeset
397
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
diff changeset
398 ldi @(gr8,260), sp
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
diff changeset
399 ldi @(gr8,264), fp
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
diff changeset
400
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
diff changeset
401 # Value to return is in r9. If zero, return 1
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
diff changeset
402 cmp gr9, gr0, icc0
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
diff changeset
403 setlos #1, gr8
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
diff changeset
404 ckne icc0, cc4
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
diff changeset
405 cmov gr9, gr8, cc4, 1
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
diff changeset
406 ret
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
diff changeset
407 .Lend2:
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
diff changeset
408 .size hal_longjmp,.Lend2-hal_longjmp2
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
diff changeset
409
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
diff changeset
410 // ----------------------------------------------------------------------------
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
diff changeset
411 // end of context.S