diff options
Diffstat (limited to 'newlib/libc/machine/x86_64/x86_64mach.h')
-rw-r--r-- | newlib/libc/machine/x86_64/x86_64mach.h | 113 |
1 files changed, 113 insertions, 0 deletions
diff --git a/newlib/libc/machine/x86_64/x86_64mach.h b/newlib/libc/machine/x86_64/x86_64mach.h new file mode 100644 index 000000000..84cb2f85d --- /dev/null +++ b/newlib/libc/machine/x86_64/x86_64mach.h @@ -0,0 +1,113 @@ +/* + ** This file is distributed WITHOUT ANY WARRANTY; without even the implied + ** warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + */ + +#ifndef __USER_LABEL_PREFIX__ +#define __USER_LABEL_PREFIX__ _ +#endif + +#define __REG_PREFIX__ % + +/* ANSI concatenation macros. */ + +#define CONCAT1(a, b) CONCAT2(a, b) +#define CONCAT2(a, b) a##b + +/* Use the right prefix for global labels. */ + +#define SYM(x) CONCAT1(__USER_LABEL_PREFIX__, x) + +/* Use the right prefix for registers. */ + +#define REG(x) CONCAT1(__REG_PREFIX__, x) + +#define rax REG(rax) +#define rbx REG(rbx) +#define rcx REG(rcx) +#define rdx REG(rdx) +#define rsi REG(rsi) +#define rdi REG(rdi) +#define rbp REG(rbp) +#define rsp REG(rsp) + +#define r8 REG(r8) +#define r9 REG(r9) +#define r10 REG(r10) +#define r11 REG(r11) +#define r12 REG(r12) +#define r13 REG(r13) +#define r14 REG(r14) +#define r15 REG(r15) + +#define eax REG(eax) +#define ebx REG(ebx) +#define ecx REG(ecx) +#define edx REG(edx) +#define esi REG(esi) +#define edi REG(edi) +#define ebp REG(ebp) +#define esp REG(esp) + +#define st0 REG(st) +#define st1 REG(st(1)) +#define st2 REG(st(2)) +#define st3 REG(st(3)) +#define st4 REG(st(4)) +#define st5 REG(st(5)) +#define st6 REG(st(6)) +#define st7 REG(st(7)) + +#define ax REG(ax) +#define bx REG(bx) +#define cx REG(cx) +#define dx REG(dx) + +#define ah REG(ah) +#define bh REG(bh) +#define ch REG(ch) +#define dh REG(dh) + +#define al REG(al) +#define bl REG(bl) +#define cl REG(cl) +#define dl REG(dl) + +#define sil REG(sil) + +#define mm1 REG(mm1) +#define mm2 REG(mm2) +#define mm3 REG(mm3) +#define mm4 REG(mm4) +#define mm5 REG(mm5) +#define mm6 REG(mm6) +#define mm7 REG(mm7) + +#define xmm0 REG(xmm0) +#define xmm1 REG(xmm1) +#define xmm2 REG(xmm2) +#define xmm3 REG(xmm3) +#define xmm4 REG(xmm4) +#define xmm5 REG(xmm5) +#define xmm6 REG(xmm6) +#define xmm7 REG(xmm7) + +#define cr0 REG(cr0) +#define cr1 REG(cr1) +#define cr2 REG(cr2) +#define cr3 REG(cr3) +#define cr4 REG(cr4) + +#ifdef _I386MACH_NEED_SOTYPE_FUNCTION +#define SOTYPE_FUNCTION(sym) .type SYM(sym),@function +#else +#define SOTYPE_FUNCTION(sym) +#endif + +#ifdef _I386MACH_ALLOW_HW_INTERRUPTS +#define __CLI +#define __STI +#else +#define __CLI cli +#define __STI sti +#endif |