diff options
author | Samuel Thibault <samuel.thibault@ens-lyon.org> | 2012-03-19 22:50:04 +0100 |
---|---|---|
committer | Samuel Thibault <samuel.thibault@ens-lyon.org> | 2020-03-28 16:18:25 +0100 |
commit | a063445630a6f26651df53543466a7bfdc44a1f7 (patch) | |
tree | 8079dbedd28235d5e721d1d64a7050fba2d5ffc9 /i386 | |
parent | 2c8ccce9d152696613e6a079770749983bf440ff (diff) | |
download | gnumach-a063445630a6f26651df53543466a7bfdc44a1f7.tar.gz gnumach-a063445630a6f26651df53543466a7bfdc44a1f7.tar.bz2 gnumach-a063445630a6f26651df53543466a7bfdc44a1f7.zip |
db_interface: Add 64bit variant
* i386/i386/db_interface.c (int_regs): Drop edi/esi fields on 64bit.
(kdb_kentry): Fix saving rsi/rdi.
Diffstat (limited to 'i386')
-rw-r--r-- | i386/i386/db_interface.c | 14 |
1 files changed, 14 insertions, 0 deletions
diff --git a/i386/i386/db_interface.c b/i386/i386/db_interface.c index aac29395..2db60b4b 100644 --- a/i386/i386/db_interface.c +++ b/i386/i386/db_interface.c @@ -347,8 +347,10 @@ kdb_trap( * instead of those at its call to KDB. */ struct int_regs { +#ifdef __i386__ long edi; long esi; +#endif long ebp; long ebx; struct i386_interrupt_state *is; @@ -381,8 +383,14 @@ kdb_kentry( ddb_regs.edx = is->edx; ddb_regs.ebx = int_regs->ebx; ddb_regs.ebp = int_regs->ebp; +#ifdef __i386__ ddb_regs.esi = int_regs->esi; ddb_regs.edi = int_regs->edi; +#endif +#ifdef __x86_64__ + ddb_regs.esi = is->rsi; + ddb_regs.edi = is->rdi; +#endif ddb_regs.ds = is->ds; ddb_regs.es = is->es; ddb_regs.fs = is->fs; @@ -404,8 +412,14 @@ kdb_kentry( is->edx = ddb_regs.edx; int_regs->ebx = ddb_regs.ebx; int_regs->ebp = ddb_regs.ebp; +#ifdef __i386__ int_regs->esi = ddb_regs.esi; int_regs->edi = ddb_regs.edi; +#endif +#ifdef __x86_64__ + is->rsi = ddb_regs.esi; + is->rdi = ddb_regs.edi; +#endif is->ds = ddb_regs.ds & 0xffff; is->es = ddb_regs.es & 0xffff; is->fs = ddb_regs.fs & 0xffff; |