source: mainline/uspace/lib/c/arch/amd64/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.1 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_RBX 0x10
34#define CONTEXT_OFFSET_RBP 0x18
35#define CONTEXT_OFFSET_R12 0x20
36#define CONTEXT_OFFSET_R13 0x28
37#define CONTEXT_OFFSET_R14 0x30
38#define CONTEXT_OFFSET_R15 0x38
39#define CONTEXT_OFFSET_TLS 0x40
40#define CONTEXT_SIZE 0x48
41
42#ifndef __ASSEMBLER__
43
44#include <stdint.h>
45
46typedef struct context {
47 /* We include only registers that must be preserved
48 * during function call.
49 */
50 uint64_t sp;
51 uint64_t pc;
52 uint64_t rbx;
53 uint64_t rbp;
54 uint64_t r12;
55 uint64_t r13;
56 uint64_t r14;
57 uint64_t r15;
58 uint64_t tls;
59} context_t;
60
61#endif
62#endif
63
Note: See TracBrowser for help on using the repository browser.