OpenCores
URL https://opencores.org/ocsvn/openrisc/openrisc/trunk

Subversion Repositories openrisc

[/] [openrisc/] [trunk/] [rtos/] [freertos-6.1.1/] [Source/] [portable/] [GCC/] [ColdFire_V2/] [portasm.S] - Blame information for rev 572

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 572 jeremybenn
/*
2
    FreeRTOS V6.1.1 - Copyright (C) 2011 Real Time Engineers Ltd.
3
 
4
    ***************************************************************************
5
    *                                                                         *
6
    * If you are:                                                             *
7
    *                                                                         *
8
    *    + New to FreeRTOS,                                                   *
9
    *    + Wanting to learn FreeRTOS or multitasking in general quickly       *
10
    *    + Looking for basic training,                                        *
11
    *    + Wanting to improve your FreeRTOS skills and productivity           *
12
    *                                                                         *
13
    * then take a look at the FreeRTOS books - available as PDF or paperback  *
14
    *                                                                         *
15
    *        "Using the FreeRTOS Real Time Kernel - a Practical Guide"        *
16
    *                  http://www.FreeRTOS.org/Documentation                  *
17
    *                                                                         *
18
    * A pdf reference manual is also available.  Both are usually delivered   *
19
    * to your inbox within 20 minutes to two hours when purchased between 8am *
20
    * and 8pm GMT (although please allow up to 24 hours in case of            *
21
    * exceptional circumstances).  Thank you for your support!                *
22
    *                                                                         *
23
    ***************************************************************************
24
 
25
    This file is part of the FreeRTOS distribution.
26
 
27
    FreeRTOS is free software; you can redistribute it and/or modify it under
28
    the terms of the GNU General Public License (version 2) as published by the
29
    Free Software Foundation AND MODIFIED BY the FreeRTOS exception.
30
    ***NOTE*** The exception to the GPL is included to allow you to distribute
31
    a combined work that includes FreeRTOS without being obliged to provide the
32
    source code for proprietary components outside of the FreeRTOS kernel.
33
    FreeRTOS is distributed in the hope that it will be useful, but WITHOUT
34
    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
35
    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for
36
    more details. You should have received a copy of the GNU General Public
37
    License and the FreeRTOS license exception along with FreeRTOS; if not it
38
    can be viewed here: http://www.freertos.org/a00114.html and also obtained
39
    by writing to Richard Barry, contact details for whom are available on the
40
    FreeRTOS WEB site.
41
 
42
    1 tab == 4 spaces!
43
 
44
    http://www.FreeRTOS.org - Documentation, latest information, license and
45
    contact details.
46
 
47
    http://www.SafeRTOS.com - A version that is certified for use in safety
48
    critical systems.
49
 
50
    http://www.OpenRTOS.com - Commercial support, development, porting,
51
    licensing and training services.
52
*/
53
 
54
/*
55
 * Purpose: Lowest level routines for all ColdFire processors.
56
 *
57
 * Notes:
58
 *
59
 * ulPortSetIPL() and mcf5xxx_wr_cacr() copied with permission from FreeScale
60
 * supplied source files.
61
 */
62
 
63
    .global ulPortSetIPL
64
    .global mcf5xxx_wr_cacr
65
    .global __cs3_isr_interrupt_80
66
    .global vPortStartFirstTask
67
 
68
    .text
69
 
70
.macro portSAVE_CONTEXT
71
 
72
        lea.l           (-60, %sp), %sp
73
        movem.l         %d0-%fp, (%sp)
74
        move.l          pxCurrentTCB, %a0
75
        move.l          %sp, (%a0)
76
 
77
        .endm
78
 
79
.macro portRESTORE_CONTEXT
80
 
81
        move.l          pxCurrentTCB, %a0
82
        move.l          (%a0), %sp
83
        movem.l         (%sp), %d0-%fp
84
        lea.l           %sp@(60), %sp
85
        rte
86
 
87
        .endm
88
 
89
/********************************************************************/
90
/*
91
 * This routines changes the IPL to the value passed into the routine.
92
 * It also returns the old IPL value back.
93
 * Calling convention from C:
94
 *   old_ipl = asm_set_ipl(new_ipl);
95
 * For the Diab Data C compiler, it passes return value thru D0.
96
 * Note that only the least significant three bits of the passed
97
 * value are used.
98
 */
99
 
100
ulPortSetIPL:
101
    link    A6,#-8
102
    movem.l D6-D7,(SP)
103
 
104
    move.w  SR,D7       /* current sr    */
105
 
106
    move.l  D7,D0       /* prepare return value  */
107
    andi.l  #0x0700,D0  /* mask out IPL  */
108
    lsr.l   #8,D0       /* IPL   */
109
 
110
    move.l  8(A6),D6    /* get argument  */
111
    andi.l  #0x07,D6    /* least significant three bits  */
112
    lsl.l   #8,D6       /* move over to make mask    */
113
 
114
    andi.l  #0x0000F8FF,D7  /* zero out current IPL  */
115
    or.l    D6,D7           /* place new IPL in sr   */
116
    move.w  D7,SR
117
 
118
    movem.l (SP),D6-D7
119
    lea     8(SP),SP
120
    unlk    A6
121
    rts
122
/********************************************************************/
123
 
124
mcf5xxx_wr_cacr:
125
    move.l  4(sp),d0
126
    .long   0x4e7b0002  /* movec d0,cacr   */
127
    nop
128
    rts
129
 
130
/********************************************************************/
131
 
132
/* Yield interrupt. */
133
__cs3_isr_interrupt_80:
134
        portSAVE_CONTEXT
135
        jsr vPortYieldHandler
136
        portRESTORE_CONTEXT
137
 
138
/********************************************************************/
139
 
140
 
141
vPortStartFirstTask:
142
        portRESTORE_CONTEXT
143
 
144
    .end
145
 
146
 

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.