lkml.org 
[lkml]   [2001]   [Nov]   [21]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    Date
    From
    SubjectRe: [alpha] cleanup opDEC workaround
    On Tue, Nov 20, 2001 at 10:47:48AM -0800, Richard Henderson wrote:
    > In the working case, we'll enter entIF with pc==cmpteq. Add 8 gives
    > stt, subtract 4 gives addt, which is engineered to be a noop.

    Argh. I was thinking too much about dummy_emul case and missed the fact
    that instruction at pc-4 is actually executed in alpha_fp_emul()...

    > Hmm. If fp emulation isn't compiled in, we shouldn't bother
    > testing this, I think. Means you can't debug fp emulation via
    > modules on Multia, but I'm pretty sure I don't care.

    Yes, making opDEC_check stuff `#ifdef CONFIG_MATHEMU' would be
    reasonable.

    > I suppose the other alternative to get the testing code out of
    > the normal entIF is to create a custom entIF that is installed
    > only during opDEC testing. Seems too much work...

    Agreed. Alternatively, it's possible to hack dummy_emul(), which
    doesn't affect the normal case.

    static long dummy_emul(unsigned long pc)
    {
    if (opDEC_fix != 8)
    return 0;
    /* Trap in opDEC_check() */
    if (*(u32 *)pc == 0x5bff141f) /* addt $f31, $f31, $f31 */
    return 1; /* SRM updates PC correctly */
    /* Broken SRM. "Emulate" cmpteq in opDEC_check() */
    __asm__ __volatile__("cmpteq $f31, $f31, $f0\n");
    return 1;
    }

    Ivan.
    -
    To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
    the body of a message to majordomo@vger.kernel.org
    More majordomo info at http://vger.kernel.org/majordomo-info.html
    Please read the FAQ at http://www.tux.org/lkml/

    \
     
     \ /
      Last update: 2005-03-22 13:18    [W:0.023 / U:0.596 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site