diff --git a/arch/x86_64/include/elf.h b/arch/x86_64/include/elf.h
index 58ed25d0a355c..fe82f56026077 100644
--- a/arch/x86_64/include/elf.h
+++ b/arch/x86_64/include/elf.h
@@ -45,4 +45,42 @@
 
 #define EF_FLAG      0
 
+/* Segment register layout in coredumps. */
+
+struct user_regs_struct
+{
+  uint64_t  r15;
+  uint64_t  r14;
+  uint64_t  r13;
+  uint64_t  r12;
+  uint64_t  bp;
+  uint64_t  bx;
+  uint64_t  r11;
+  uint64_t  r10;
+  uint64_t  r9;
+  uint64_t  r8;
+  uint64_t  ax;
+  uint64_t  cx;
+  uint64_t  dx;
+  uint64_t  si;
+  uint64_t  di;
+  uint64_t  orig_ax;
+  uint64_t  ip;
+  uint64_t  cs;
+  uint64_t  flags;
+  uint64_t  sp;
+  uint64_t  ss;
+  uint64_t  fs_base;
+  uint64_t  gs_base;
+  uint64_t  ds;
+  uint64_t  es;
+  uint64_t  fs;
+  uint64_t  gs;
+};
+
+typedef uint64_t elf_greg_t;
+
+#define ELF_NGREG (sizeof(struct user_regs_struct) / sizeof(elf_greg_t))
+typedef elf_greg_t elf_gregset_t[ELF_NGREG];
+
 #endif /* __ARCH_X86_64_INCLUDE_ELF_H */
diff --git a/arch/x86_64/src/common/x86_64_tcbinfo.c b/arch/x86_64/src/common/x86_64_tcbinfo.c
index 6482697073de1..fafcba82d294e 100644
--- a/arch/x86_64/src/common/x86_64_tcbinfo.c
+++ b/arch/x86_64/src/common/x86_64_tcbinfo.c
@@ -36,29 +36,33 @@
 
 static const uint16_t g_reg_offs[] =
 {
-  TCB_REG_OFF(REG_RAX),    /* RAX */
+  TCB_REG_OFF(REG_R15),    /* R15 */
+  TCB_REG_OFF(REG_R14),    /* R14 */
+  TCB_REG_OFF(REG_R13),    /* R13 */
+  TCB_REG_OFF(REG_R12),    /* R12 */
+  TCB_REG_OFF(REG_RBP),    /* RBP */
   TCB_REG_OFF(REG_RBX),    /* RBX */
+  TCB_REG_OFF(REG_R11),    /* R11 */
+  TCB_REG_OFF(REG_R10),    /* R10 */
+  TCB_REG_OFF(REG_R9),     /* R9 */
+  TCB_REG_OFF(REG_R8),     /* R8 */
+  TCB_REG_OFF(REG_RAX),    /* RAX */
   TCB_REG_OFF(REG_RCX),    /* RCX */
   TCB_REG_OFF(REG_RDX),    /* RDX */
   TCB_REG_OFF(REG_RSI),    /* RSI */
   TCB_REG_OFF(REG_RDI),    /* RDI */
-  TCB_REG_OFF(REG_RBP),    /* RBP */
-  TCB_REG_OFF(REG_RSP),    /* RSP */
-  TCB_REG_OFF(REG_R8),     /* R8 */
-  TCB_REG_OFF(REG_R9),     /* R9 */
-  TCB_REG_OFF(REG_R10),    /* R10 */
-  TCB_REG_OFF(REG_R11),    /* R11 */
-  TCB_REG_OFF(REG_R12),    /* R12 */
-  TCB_REG_OFF(REG_R13),    /* R13 */
-  TCB_REG_OFF(REG_R14),    /* R14 */
-  TCB_REG_OFF(REG_R15),    /* R15 */
+  TCB_REG_OFF(REG_RAX),    /* RAX */
   TCB_REG_OFF(REG_RIP),    /* RIP */
-  TCB_REG_OFF(REG_RFLAGS), /* EFLAGS */
   TCB_REG_OFF(REG_CS),     /* CS */
+  TCB_REG_OFF(REG_RFLAGS), /* RFLAGS */
+  TCB_REG_OFF(REG_RSP),    /* RSP */
   TCB_REG_OFF(REG_SS),     /* SS */
+  TCB_REG_OFF(REG_FS),     /* FS_BASE */
+  TCB_REG_OFF(REG_GS),     /* GS_BASE */
   TCB_REG_OFF(REG_DS),     /* DS */
   TCB_REG_OFF(REG_ES),     /* ES */
   TCB_REG_OFF(REG_FS),     /* FS */
+  TCB_REG_OFF(REG_GS),     /* GS */
 };
 
 /****************************************************************************
diff --git a/libs/libc/machine/x86_64/CMakeLists.txt b/libs/libc/machine/x86_64/CMakeLists.txt
index da64023619ab0..2dfd0a9607d8d 100644
--- a/libs/libc/machine/x86_64/CMakeLists.txt
+++ b/libs/libc/machine/x86_64/CMakeLists.txt
@@ -25,7 +25,7 @@ add_subdirectory(gnu)
 set(SRCS)
 
 if(CONFIG_LIBC_ARCH_ELF)
-  list(APPEND SRCS arch_elf.c)
+  list(APPEND SRCS arch_elf64.c)
 endif()
 
 if(CONFIG_ARCH_SETJMP_H)
diff --git a/sched/misc/coredump.c b/sched/misc/coredump.c
index 49ee27f8cb016..22d2f9f687b22 100644
--- a/sched/misc/coredump.c
+++ b/sched/misc/coredump.c
@@ -55,6 +55,12 @@
 
 #define PROGRAM_ALIGNMENT 64
 
+/* Architecture can overwrite the default XCPTCONTEXT alignment */
+
+#ifndef XCPTCONTEXT_ALIGN
+#  define XCPTCONTEXT_ALIGN 16
+#endif
+
 /****************************************************************************
  * Private Types
  ****************************************************************************/
@@ -74,7 +80,8 @@ struct elf_dumpinfo_s
  * Private Data
  ****************************************************************************/
 
-static uint8_t g_running_regs[XCPTCONTEXT_SIZE] aligned_data(16);
+static uint8_t g_running_regs[XCPTCONTEXT_SIZE]
+               aligned_data(XCPTCONTEXT_ALIGN);
 
 #ifdef CONFIG_BOARD_COREDUMP_COMPRESSION
 static struct lib_lzfoutstream_s  g_lzfstream;