source: trunk/libs/newlib/src/libgloss/sparc_leon/asm-leon/stack.h @ 656

Last change on this file since 656 was 444, checked in by satin@…, 6 years ago

add newlib,libalmos-mkh, restructure shared_syscalls.h and mini-libc

File size: 2.3 KB
Line 
1/*
2 * Copyright (c) 2011 Aeroflex Gaisler
3 *
4 * BSD license:
5 *
6 * Permission is hereby granted, free of charge, to any person obtaining a copy
7 * of this software and associated documentation files (the "Software"), to deal
8 * in the Software without restriction, including without limitation the rights
9 * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
10 * copies of the Software, and to permit persons to whom the Software is
11 * furnished to do so, subject to the following conditions:
12 *
13 * The above copyright notice and this permission notice shall be included in
14 * all copies or substantial portions of the Software.
15 *
16 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
17 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
18 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
19 * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
20 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
21 * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
22 * THE SOFTWARE.
23 */
24
25
26#ifndef _SYS_STACK_H_
27#define _SYS_STACK_H_
28
29#if !defined(_ASM)
30#include <sys/types.h>
31#endif
32
33#ifdef  __cplusplus
34extern "C"
35{
36#endif
37
38/*
39 * A stack frame looks like:
40 *
41 * %fp->|                               |
42 *      |-------------------------------|
43 *      |  Locals, temps, saved floats  |
44 *      |-------------------------------|
45 *      |  outgoing parameters past 6   |
46 *      |-------------------------------|-\
47 *      |  6 words for callee to dump   | |
48 *      |  register arguments           | |
49 *      |-------------------------------|  > minimum stack frame
50 *      |  One word struct-ret address  | |
51 *      |-------------------------------| |
52 *      |  16 words to save IN and      | |
53 * %sp->|  LOCAL register on overflow   | |
54 *      |-------------------------------|-/
55 */
56
57/*
58 * Constants defining a 32-bit stack frame.
59 */
60#define WINDOWSIZE      (16*4)  /* size of window save area */
61#define ARGPUSHSIZE     (6*4)   /* size of arg dump area */
62#define ARGPUSH         (WINDOWSIZE + 4)        /* arg dump area offset */
63#define MINFRAME        (WINDOWSIZE + ARGPUSHSIZE + 4)  /* min frame */
64
65#define STACK_GROWTH_DOWN       /* stacks grow from high to low addresses */
66
67/*
68 * Stack alignment macros.
69 */
70#define STACK_ALIGN     8
71#define SA(X)           (((X)+(STACK_ALIGN-1)) & ~(STACK_ALIGN-1))
72
73#ifdef  __cplusplus
74}
75#endif
76
77#endif                          /* _SYS_STACK_H */
Note: See TracBrowser for help on using the repository browser.