Josh

I had this same problem on x86_64.  I used a different version of
kdb_call on x86_64 to get this to work.

What I suggest is determine how parameters are passed by your version of
gcc and then make kdb_call match it.  This can be determined by
executing a KDB_ENTER with known values and disassembling the code with
objdump.  Then these parameter registers or stack addresses can be used
in your kdb_call function in i386/entry.S.  Kind of complicated; I hope
it helps.

regards
-steve

On Wed, 2005-06-29 at 21:38 -0700, Josh Hunt wrote:
> Yes I applied both of those patches with no rejects.  Here's all the
> info you requested.
> Thanks for your help.  Please let me know if you need anything else.
> 
> Josh
> 
> 
> [EMAIL PROTECTED] linux-2.6.12.1]# gcc -v
> Reading specs from /usr/lib/gcc/i386-redhat-linux/3.4.2/specs
> Configured with: ../configure --prefix=/usr --mandir=/usr/share/man
> --infodir=/usr/share/info --enable-shared --enable-threads=posix
> --disable-checking --with-system-zlib --enable-__cxa_atexit
> --disable-libunwind-exceptions --enable-java-awt=gtk
> --host=i386-redhat-linux
> Thread model: posix
> gcc version 3.4.2 20041017 (Red Hat 3.4.2-6.fc3)
> 
> 000017b0 <kdb>:
>     17b0:       55                      push   %ebp
>     17b1:       89 cd                   mov    %ecx,%ebp
>     17b3:       57                      push   %edi
>     17b4:       89 d7                   mov    %edx,%edi
>     17b6:       56                      push   %esi
>     17b7:       89 c6                   mov    %eax,%esi
>     17b9:       53                      push   %ebx
>     17ba:       83 ec 34                sub    $0x34,%esp
>     17bd:       89 44 24 28             mov    %eax,0x28(%esp)
>     17c1:       31 c0                   xor    %eax,%eax
>     17c3:       89 44 24 24             mov    %eax,0x24(%esp)
>     17c7:       b8 04 00 00 00          mov    $0x4,%eax
>     17cc:       89 44 24 1c             mov    %eax,0x1c(%esp)
>  * Atomically increments @v by 1.
>  */
> static __inline__ void atomic_inc(atomic_t *v)
> {
>         __asm__ __volatile__(
>     17d0:       ff 05 00 00 00 00       incl   0x0
>                         17d2: R_386_32  kdb_event
>     17d6:       83 fe 0a                cmp    $0xa,%esi
>     17d9:       77 14                   ja     17ef <kdb+0x3f>
>     17db:       b8 01 00 00 00          mov    $0x1,%eax
>     17e0:       89 f1                   mov    %esi,%ecx
>     17e2:       d3 e0                   shl    %cl,%eax
>     17e4:       a9 20 06 00 00          test   $0x620,%eax
>     17e9:       0f 85 17 06 00 00       jne    1e06 <kdb+0x656>
>     17ef:       83 3d 1c 00 00 00 02    cmpl   $0x2,0x1c
>                         17f1: R_386_32  .bss
>     17f6:       0f 87 24 06 00 00       ja     1e20 <kdb+0x670>
>     17fc:       8b 1d 00 00 00 00       mov    0x0,%ebx
>                         17fe: R_386_32  kdb_on
>     1802:       85 db                   test   %ebx,%ebx
>     1804:       75 23                   jne    1829 <kdb+0x79>
>     1806:       a1 00 00 00 00          mov    0x0,%eax
>                         1807: R_386_32  kdb_flags
>     180b:       a8 02                   test   $0x2,%al
>     180d:       74 0d                   je     181c <kdb+0x6c>
>     180f:       83 3d 1c 00 00 00 02    cmpl   $0x2,0x1c
>                         1811: R_386_32  .bss
> 
> 000014f0 <do_int3>:
>     14f0:       83 ec 18                sub    $0x18,%esp
>     14f3:       89 c1                   mov    %eax,%ecx
>     14f5:       89 74 24 14             mov    %esi,0x14(%esp)
>     14f9:       89 c6                   mov    %eax,%esi
>     14fb:       b8 03 00 00 00          mov    $0x3,%eax
>     1500:       89 5c 24 10             mov    %ebx,0x10(%esp)
>     1504:       89 d3                   mov    %edx,%ebx
>     1506:       e8 fc ff ff ff          call   1507 <do_int3+0x17>
>                         1507: R_386_PC32        kdb
>     150b:       85 c0                   test   %eax,%eax
>     150d:       74 11                   je     1520 <do_int3+0x30>
>     150f:       8b 5c 24 10             mov    0x10(%esp),%ebx
>     1513:       8b 74 24 14             mov    0x14(%esp),%esi
>     1517:       83 c4 18                add    $0x18,%esp
>     151a:       c3                      ret
>     151b:       90                      nop
>     151c:       8d 74 26 00             lea    0x0(%esi),%esi
>     1520:       89 5c 24 08             mov    %ebx,0x8(%esp)
>     1524:       31 c0                   xor    %eax,%eax
>     1526:       b9 ea 01 00 00          mov    $0x1ea,%ecx
>                         1527: R_386_32  .rodata.str1.1
>     152b:       89 44 24 0c             mov    %eax,0xc(%esp)
>     152f:       ba 05 00 00 00          mov    $0x5,%edx
>     1534:       b8 03 00 00 00          mov    $0x3,%eax
>     1539:       89 74 24 04             mov    %esi,0x4(%esp)
>     153d:       c7 04 24 01 00 00 00    movl   $0x1,(%esp)
>     1544:       e8 67 f2 ff ff          call   7b0 <do_trap>
>     1549:       8b 5c 24 10             mov    0x10(%esp),%ebx
>     154d:       8b 74 24 14             mov    0x14(%esp),%esi
>     1551:       83 c4 18                add    $0x18,%esp
>     1554:       c3                      ret
>     1555:       8d 74 26 00             lea    0x0(%esi),%esi
>     1559:       8d bc 27 00 00 00 00    lea    0x0(%edi),%edi
> 
> 00001560 <math_error>:
>     1560:       56                      push   %esi
>     1561:       89 c2                   mov    %eax,%edx
> /* how to get the thread information struct from C */
> static inline struct thread_info *current_thread_info(void)
> {
> 
> 
> On 6/29/05, Keith Owens <[EMAIL PROTECTED]> wrote:
> > On Wed, 29 Jun 2005 20:28:57 -0700, 
> > Josh Hunt <[EMAIL PROTECTED]> wrote:
> > >I am unable to get KDB_ENTER() to work properly in either 2.6.11 or
> > >2.6.12.
> > >Entering kdb (current=0xc0398c80, pid 0) kdb: unexpected reason code: 0
> > 
> > Either a patch was misapplied or there is a mismatch in the parameter
> > passing.  Did you apply both kdb-v4.4-2.6.12-common-1 and
> > kdb-v4.4-2.6.12-i386-2, with no patch rejects?  Which version of gcc
> > are you using (gcc -v)?
> > 
> > To check the parameter passing, I need the output from these commands
> > 
> >   objdump -Sr kdb/kdbmain.o | grep -A40 '<kdb>:'
> >   objdump -Sr arch/i386/kernel/traps.o | grep -A40 '<do_int3>:'
> > 
> >
> 
> ---------------------------
> Use http://oss.sgi.com/ecartis to modify your settings or to unsubscribe.

---------------------------
Use http://oss.sgi.com/ecartis to modify your settings or to unsubscribe.

Reply via email to