Kconfig: Make GBD_STUB and long mode mutually exclusive

GDB debugging is not implemented with x86 long mode.

Change-Id: Icaf7d0763829d5badf73d38bb8fc3d36cfe18964
Signed-off-by: Arthur Heymans <arthur@aheymans.xyz>
Reviewed-on: https://review.coreboot.org/c/coreboot/+/81379
Reviewed-by: Martin L Roth <gaumless@gmail.com>
Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
Reviewed-by: Lean Sheng Tan <sheng.tan@9elements.com>
Reviewed-by: Eric Lai <ericllai@google.com>
diff --git a/src/Kconfig b/src/Kconfig
index 3a9a4e8..645d16c 100644
--- a/src/Kconfig
+++ b/src/Kconfig
@@ -1015,7 +1015,8 @@
 config GDB_STUB
 	bool "GDB debugging support"
 	default n
-	depends on DRIVERS_UART
+# FIXME Not implemented in long mode
+	depends on DRIVERS_UART && !USE_X86_64_SUPPORT
 	help
 	  If enabled, you will be able to set breakpoints for gdb debugging.
 	  See src/arch/x86/c_start.S for details.
diff --git a/src/arch/x86/c_start.S b/src/arch/x86/c_start.S
index 6bea8db..94b9bd9 100644
--- a/src/arch/x86/c_start.S
+++ b/src/arch/x86/c_start.S
@@ -129,8 +129,9 @@
 gdb_stub_breakpoint:
 #if ENV_X86_64
 	pop	%rax	/* Return address */
-	pushfl
-	push	%cs
+	pushfq
+	mov	%cs, %rbx
+	push	%rbx
 	push	%rax	/* Return address */
 	push	$0	/* No error code */
 	push	$32	/* vector 32 is user defined */
diff --git a/src/arch/x86/exception.c b/src/arch/x86/exception.c
index b8f0583..aecce7b 100644
--- a/src/arch/x86/exception.c
+++ b/src/arch/x86/exception.c
@@ -379,6 +379,7 @@
 void x86_exception(struct eregs *info)
 {
 #if CONFIG(GDB_STUB)
+	/* TODO implement 64bit mode */
 	int signo;
 	memcpy(gdb_stub_registers, info, 8*sizeof(uint32_t));
 	gdb_stub_registers[PC] = info->eip;