Add include/reactos/asm.h
authorTimo Kreuzer <timo.kreuzer@reactos.org>
Fri, 29 Jan 2010 23:29:58 +0000 (23:29 +0000)
committerTimo Kreuzer <timo.kreuzer@reactos.org>
Fri, 29 Jan 2010 23:29:58 +0000 (23:29 +0000)
This file replaces asmmacro.S and shall provide GAS/ML64 compatibility definitions

svn path=/branches/ros-amd64-bringup/; revision=45326

reactos/include/reactos/asm.h [new file with mode: 0644]

diff --git a/reactos/include/reactos/asm.h b/reactos/include/reactos/asm.h
new file mode 100644 (file)
index 0000000..8d8f48d
--- /dev/null
@@ -0,0 +1,86 @@
+/*
+ * COPYRIGHT:       See COPYING in the top level directory
+ * PROJECT:         ReactOS Kernel
+ * FILE:            ntoskrnl/include/amd64/asmmacro.S
+ * PURPOSE:         ASM macros for for GAS and ML64
+ * PROGRAMMERS:     Timo Kreuzer (timo.kreuzer@reactos.org)
+ */
+
+#ifdef _MSC_VER
+
+#else
+
+.intel_syntax noprefix
+.code64
+
+/* Macros for x64 stack unwind OPs */
+
+.macro .proc name
+    .func name
+    .global _\name
+    _\name:
+    .cfi_startproc
+    .equ cfa_current_offset, -8
+.endm
+
+.macro .endproc
+    .cfi_endproc
+    .endfunc
+.endm
+
+.macro .allocstack size
+    .cfi_adjust_cfa_offset \size
+    .set cfa_current_offset, cfa_current_offset - \size
+.endm
+
+.macro .pushframe code
+    .if (\code == 0)
+        .cfi_adjust_cfa_offset 0x28
+        .set cfa_current_offset, cfa_current_offset - 0x28
+    .else
+        .cfi_adjust_cfa_offset 0x30
+        .set cfa_current_offset, cfa_current_offset - 0x30
+    .endif
+.endm
+
+.macro .pushreg reg
+    .cfi_adjust_cfa_offset 8
+    .equ cfa_current_offset, cfa_current_offset - 8
+    .cfi_offset \reg, cfa_current_offset
+.endm
+
+.macro .savereg reg, offset
+    // checkme!!!
+    .cfi_offset \reg, \offset
+.endm
+
+.macro .savexmm128 reg, offset
+    // checkme!!!
+    .cfi_offset \reg, \offset
+.endm
+
+.macro .setframe reg, offset
+    .cfi_def_cfa reg, \offset
+    .equ cfa_current_offset, \offset
+.endm
+
+.macro .endprolog
+.endm
+
+.macro UNIMPLEMENTED2 file, line, func
+    jmp 3f
+    .equ expr, 12
+1:  .asciz "\func"
+2:  .asciz "\file"
+3:
+    sub rsp, 0x20
+    lea rcx, _MsgUnimplemented[rip]
+    lea rdx, 1b[rip]
+    lea r8, 2b[rip]
+    mov r9, \line
+    call _DbgPrint
+    add rsp, 0x20
+.endm
+#define UNIMPLEMENTED UNIMPLEMENTED2 __FILE__, __LINE__,
+
+#endif