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>
This commit is contained in:
Arthur Heymans
2024-03-21 13:58:49 +01:00
committed by Lean Sheng Tan
parent 42fa6247f4
commit c5e467e50c
3 changed files with 6 additions and 3 deletions

View File

@ -1015,7 +1015,8 @@ comment "General Debug Settings"
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.

View File

@ -129,8 +129,9 @@ _start:
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 */

View File

@ -379,6 +379,7 @@ void x86_exception(struct eregs *info);
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;