source: mainline/uspace/lib/c/arch/mips32/include/libarch/fibril_context.h@ 99013b84

Last change on this file since 99013b84 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.8 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 0x04
33#define CONTEXT_OFFSET_S0 0x08
34#define CONTEXT_OFFSET_S1 0x0c
35#define CONTEXT_OFFSET_S2 0x10
36#define CONTEXT_OFFSET_S3 0x14
37#define CONTEXT_OFFSET_S4 0x18
38#define CONTEXT_OFFSET_S5 0x1c
39#define CONTEXT_OFFSET_S6 0x20
40#define CONTEXT_OFFSET_S7 0x24
41#define CONTEXT_OFFSET_S8 0x28
42#define CONTEXT_OFFSET_GP 0x2c
43#define CONTEXT_OFFSET_TLS 0x30
44#define CONTEXT_OFFSET_F20 0x34
45#define CONTEXT_OFFSET_F21 0x38
46#define CONTEXT_OFFSET_F22 0x3c
47#define CONTEXT_OFFSET_F23 0x40
48#define CONTEXT_OFFSET_F24 0x44
49#define CONTEXT_OFFSET_F25 0x48
50#define CONTEXT_OFFSET_F26 0x4c
51#define CONTEXT_OFFSET_F27 0x50
52#define CONTEXT_OFFSET_F28 0x54
53#define CONTEXT_OFFSET_F29 0x58
54#define CONTEXT_OFFSET_F30 0x5c
55#define CONTEXT_SIZE 0x60
56
57#ifndef __ASSEMBLER__
58
59#include <stddef.h>
60#include <stdint.h>
61
62typedef struct context {
63 uint32_t sp;
64 uint32_t pc;
65 uint32_t s0;
66 uint32_t s1;
67 uint32_t s2;
68 uint32_t s3;
69 uint32_t s4;
70 uint32_t s5;
71 uint32_t s6;
72 uint32_t s7;
73 uint32_t s8;
74 uint32_t gp;
75 /* Thread local storage (k1) */
76 uint32_t tls;
77 uint32_t f20;
78 uint32_t f21;
79 uint32_t f22;
80 uint32_t f23;
81 uint32_t f24;
82 uint32_t f25;
83 uint32_t f26;
84 uint32_t f27;
85 uint32_t f28;
86 uint32_t f29;
87 uint32_t f30;
88} context_t;
89
90#endif
91#endif
92
Note: See TracBrowser for help on using the repository browser.