On 12/07/2010 12:51 PM, Gilles Chanteperdrix wrote:
Anders Blomdell wrote:
When compiling Xenomai on Fedora-14 with gcc-4.5.1 [version 4.5.1
20100924 (Red Hat 4.5.1-4)], the loading of xeno_nucleus fails with the
attached kernel OOPS, a notable difference between the 4.5.1 compiled
version and a working one built with gcc-4.4.4 on the same system with
the same configuration, sis tthat __rthal_x86_nodiv_ullimd is not
inlined, is this anybody has seen before?

No, that is new, we need to see the disassembly of __rthal_x86_nodiv_ullimd

objdump -S:

static inline __attribute__((const)) unsigned long long
__rthal_x86_nodiv_ullimd(const unsigned long long op,
                         const unsigned long long frac,
                         unsigned integ)
{
    e7a8:       55                      push   %ebp
    e7a9:       89 e5                   mov    %esp,%ebp
    e7ab:       57                      push   %edi
    e7ac:       56                      push   %esi
    e7ad:       53                      push   %ebx
    e7ae:       83 ec 10                sub    $0x10,%esp
    e7b1:       8d 7d 08                lea    0x8(%ebp),%edi
    e7b4:       e8 fc ff ff ff          call   e7b5 
<__rthal_x86_nodiv_ullimd+0xd>
    e7b9:       8b 1f                   mov    (%edi),%ebx
    e7bb:       8b 4f 04                mov    0x4(%edi),%ecx
        register unsigned rm __asm__("esi");
        register unsigned rh __asm__("edi");
        unsigned fracl, frach, opl, oph;
        register unsigned long long t;

        __rthal_u64tou32(op, oph, opl);
    e7be:       89 45 e8                mov    %eax,-0x18(%ebp)
        __rthal_u64tou32(frac, frach, fracl);
    e7c1:       89 5d f0                mov    %ebx,-0x10(%ebp)
        register unsigned rm __asm__("esi");
        register unsigned rh __asm__("edi");
        unsigned fracl, frach, opl, oph;
        register unsigned long long t;

        __rthal_u64tou32(op, oph, opl);
    e7c4:       89 55 e4                mov    %edx,-0x1c(%ebp)
        __rthal_u64tou32(frac, frach, fracl);
    e7c7:       89 4d ec                mov    %ecx,-0x14(%ebp)

        __asm__ ("mov %[oph], %%eax\n\t"
    e7ca:       8b 45 e4                mov    -0x1c(%ebp),%eax
    e7cd:       f7 65 ec                mull   -0x14(%ebp)
    e7d0:       89 c6                   mov    %eax,%esi
    e7d2:       89 d7                   mov    %edx,%edi
    e7d4:       8b 45 e8                mov    -0x18(%ebp),%eax
    e7d7:       f7 65 f0                mull   -0x10(%ebp)
    e7da:       89 d1                   mov    %edx,%ecx
    e7dc:       d1 e0                   shl    %eax
    e7de:       83 d1 00                adc    $0x0,%ecx
    e7e1:       83 d6 00                adc    $0x0,%esi
    e7e4:       83 d7 00                adc    $0x0,%edi
    e7e7:       8b 45 e4                mov    -0x1c(%ebp),%eax
    e7ea:       f7 65 f0                mull   -0x10(%ebp)
    e7ed:       01 c1                   add    %eax,%ecx
    e7ef:       11 d6                   adc    %edx,%esi
    e7f1:       83 d7 00                adc    $0x0,%edi
    e7f4:       8b 45 e8                mov    -0x18(%ebp),%eax
    e7f7:       f7 65 ec                mull   -0x14(%ebp)
    e7fa:       01 c1                   add    %eax,%ecx
    e7fc:       11 d6                   adc    %edx,%esi
    e7fe:       83 d7 00                adc    $0x0,%edi
    e801:       8b 45 e8                mov    -0x18(%ebp),%eax
    e804:       f7 67 08                mull   0x8(%edi)
    e807:       01 f0                   add    %esi,%eax
    e809:       11 d7                   adc    %edx,%edi
    e80b:       8b 55 e4                mov    -0x1c(%ebp),%edx
    e80e:       0f af 57 08             imul   0x8(%edi),%edx
    e812:       01 fa                   add    %edi,%edx
                 : [opl]"m"(opl), [oph]"m"(oph),
                   [fracl]"m"(fracl), [frach]"m"(frach), [integ]"m"(integ)
                 : "cc");

        return t;
}
    e814:       83 c4 10                add    $0x10,%esp
    e817:       5b                      pop    %ebx
    e818:       5e                      pop    %esi
    e819:       5f                      pop    %edi
    e81a:       5d                      pop    %ebp
    e81b:       c3                      ret


But us I said, in the working version, the code seems to be inlined everywhere. Should I send the two object modules as well (probably as a private message?).

/Anders

--
Anders Blomdell                  Email: anders.blomd...@control.lth.se
Department of Automatic Control
Lund University                  Phone:    +46 46 222 4625
P.O. Box 118                     Fax:      +46 46 138118
SE-221 00 Lund, Sweden


_______________________________________________
Xenomai-core mailing list
Xenomai-core@gna.org
https://mail.gna.org/listinfo/xenomai-core

Reply via email to