source: mainline/uspace/lib/c/arch/ia32/include/libarch/fibril_context.h@ 64d38cd

Last change on this file since 64d38cd 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.0 KB
Line 
1/* Copyright (c) 2014 Jakub Jermar
2 * All rights preserved.
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_EBX 0x08
34#define CONTEXT_OFFSET_ESI 0x0c
35#define CONTEXT_OFFSET_EDI 0x10
36#define CONTEXT_OFFSET_EBP 0x14
37#define CONTEXT_OFFSET_TLS 0x18
38#define CONTEXT_SIZE 0x1c
39
40#ifndef __ASSEMBLER__
41
42#include <stdint.h>
43
44/* We include only registers that must be preserved during function call. */
45typedef struct context {
46 uint32_t sp;
47 uint32_t pc;
48 uint32_t ebx;
49 uint32_t esi;
50 uint32_t edi;
51 uint32_t ebp;
52 uint32_t tls;
53} context_t;
54
55#endif
56#endif
57
Note: See TracBrowser for help on using the repository browser.