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.