source: mainline/uspace/lib/c/arch/sparc64/include/libarch/fibril_context.h@ ad896eb

lfn serial ticket/834-toolchain-update topic/msim-upgrade topic/simplify-dev-export
Last change on this file since ad896eb was d2f75eb, checked in by GitHub <noreply@…>, 8 years ago

Replace autogen.py with something simpler. (#30)

Instead of generating headers for certain structures, the headers are written manually and we automate checking correctness instead. Checking is performed by generating a C source with a bunch of static asserts, using a simple awk script. This is then treated as a normal source file.

The primary motivation for this change is to reduce the complexity of the build process. Also, the .ag files we used previously are more difficult to understand than regular C code, and at least one IDE (GNOME Builder) completely refuses to open them.

  • Property mode set to 100644
File size: 2.5 KB
Line 
1/* Copyright (c) 2014 Jakub Jermar
2 * All rights reserved.
3 *
4 * Redistribution and use in source and binary forms, with or without
5 * modification, are permitted provided that the following conditions
6 * are met:
7 *
8 * - Redistributions of source code must retain the above copyright
9 * notice, this list of conditions and the following disclaimer.
10 * - Redistributions in binary form must reproduce the above copyright
11 * notice, this list of conditions and the following disclaimer in the
12 * documentation and/or other materials provided with the distribution.
13 * - The name of the author may not be used to endorse or promote products
14 * derived from this software without specific prior written permission.
15 *
16 * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
17 * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
18 * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
19 * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
20 * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
21 * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
22 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
23 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
24 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
25 * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
26 */
27
28#ifndef LIBC_ARCH_FIBRIL_CONTEXT_H_
29#define LIBC_ARCH_FIBRIL_CONTEXT_H_
30
31#define CONTEXT_OFFSET_SP 0x00
32#define CONTEXT_OFFSET_PC 0x08
33#define CONTEXT_OFFSET_I0 0x10
34#define CONTEXT_OFFSET_I1 0x18
35#define CONTEXT_OFFSET_I2 0x20
36#define CONTEXT_OFFSET_I3 0x28
37#define CONTEXT_OFFSET_I4 0x30
38#define CONTEXT_OFFSET_I5 0x38
39#define CONTEXT_OFFSET_FP 0x40
40#define CONTEXT_OFFSET_I7 0x48
41#define CONTEXT_OFFSET_L0 0x50
42#define CONTEXT_OFFSET_L1 0x58
43#define CONTEXT_OFFSET_L2 0x60
44#define CONTEXT_OFFSET_L3 0x68
45#define CONTEXT_OFFSET_L4 0x70
46#define CONTEXT_OFFSET_L5 0x78
47#define CONTEXT_OFFSET_L6 0x80
48#define CONTEXT_OFFSET_L7 0x88
49#define CONTEXT_OFFSET_TP 0x90
50#define CONTEXT_SIZE 0x98
51
52#ifndef __ASSEMBLER__
53
54#include <stddef.h>
55#include <stdint.h>
56
57typedef struct context {
58 uintptr_t sp; // %o6
59 uintptr_t pc; // %o7
60 uint64_t i0;
61 uint64_t i1;
62 uint64_t i2;
63 uint64_t i3;
64 uint64_t i4;
65 uint64_t i5;
66 uintptr_t fp; // %i6
67 uintptr_t i7;
68 uint64_t l0;
69 uint64_t l1;
70 uint64_t l2;
71 uint64_t l3;
72 uint64_t l4;
73 uint64_t l5;
74 uint64_t l6;
75 uint64_t l7;
76 uint64_t tp; // %g7
77} context_t;
78
79#endif
80#endif
81
Note: See TracBrowser for help on using the repository browser.