add registers.h
[ust.git] / libust / registers.h
CommitLineData
d98a01c6
PMF
1#ifndef UST_REGISTERS_H
2#define UST_REGISTERS_H
3
4#include <stddef.h>
5
6#ifdef X86_32
7
8struct registers {
9 long eax;
10 long ebx;
11 long ecx;
12 long edx;
13 long ebp;
14 long esp;
15 long esi;
16 long edi;
17 int xds;
18 int xes;
19 int xfs;
20 int xgs;
21 long eip;
22 int xcs;
23 long eflags;
24 int xss;
25};
26
27static inline save_registers(struct registers *regs)
28{
29}
30
31#else
32
33struct registers {
34 unsigned long rax;
35 unsigned long rbx;
36 unsigned long rcx;
37 unsigned long rdx;
38 unsigned long rbp;
39 unsigned long rsp;
40 unsigned long rsi;
41 unsigned long rdi;
42 unsigned long r8;
43 unsigned long r9;
44 unsigned long r10;
45 unsigned long r11;
46 unsigned long r12;
47 unsigned long r13;
48 unsigned long r14;
49 unsigned long r15;
50 unsigned long rip;
51 int cs;
52 int ss;
53};
54
55static inline save_registers(struct registers *regs)
56{
57 asm ("movq %%rax,%c[rax_off](%[regs])\n\t"
58/* "movq %%rax,%[rax_el]\n\t"
59 "movq %%rbx,%[rbx_el]\n\t"
60 "movq %%rcx,%[rcx_el]\n\t"
61 "movq %%rdx,%[rdx_el]\n\t"
62 "movq %%rbp,%[rbp_el]\n\t"
63 "movq %%rsp,%[rsp_el]\n\t"
64 "movq %%rsi,%[rsi_el]\n\t"
65 "movq %%rdi,%[rdi_el]\n\t"
66 "movq %%r8, %[r8_el]\n\t"
67 "movq %%r9, %[r9_el]\n\t"
68 "movq %%r10,%[r10_el]\n\t"
69 "movq %%r11,%[r11_el]\n\t"
70 "movq %%r12,%[r12_el]\n\t"
71 "movq %%r13,%[r13_el]\n\t"
72 "movq %%r14,%[r14_el]\n\t"
73 "movq %%r15,%[r15_el]\n\t"
74 "movw %%cs,%[cs_el]\n\t"
75 "movw %%ss,%[ss_el]\n\t"
76 "call getip\n\t"
77 "getip:\n\t"
78 "popq %[rip_el]\n\t" */
79 : /* do output regs */
80 : [rax_off] "i" (offsetof(struct registers, rax)),
81 [regs] "r" (regs)
82/* : [rax_el] "m" (regs->rax),
83 [rbx_el] "m" (regs->rbx),
84 [rcx_el] "m" (regs->rcx),
85 [rdx_el] "m" (regs->rdx),
86 [rbp_el] "m" (regs->rbp),
87 [rsp_el] "m" (regs->rsp),
88 [rsi_el] "m" (regs->rsi),
89 [rdi_el] "m" (regs->rdi),
90 [r8_el] "m" (regs->r8),
91 [r9_el] "m" (regs->r9),
92 [r10_el] "m" (regs->r10),
93 [r11_el] "m" (regs->r11),
94 [r12_el] "m" (regs->r12),
95 [r13_el] "m" (regs->r13),
96 [r14_el] "m" (regs->r14),
97 [r15_el] "m" (regs->r15),
98 [cs_el] "m" (regs->cs),
99 [ss_el] "m" (regs->ss),
100 [rip_el] "m" (regs->rip)*/
101 );
102}
103
104#endif
105
106#endif /* UST_REGISTERS_H */
This page took 0.026718 seconds and 4 git commands to generate.