[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [MiNT] .xif module load problem



Hi!

Also I don't understand why this workaround fixes the problem. Because the actual problem is a stack corruption. After the dummy.xif module successful load the load_modules() dirh.fs contains invalid filesystem pointer... This happens for any .xif module I have tried.

STanda


Standa Opichal wrote:
Hi!

In the module.c there is the section you can read at the bottom of this mail. I tried the same approach for the inet4.xdd XIF loader function and it solved my problem with loading the .xif drivers in ARAnyM.

Does anyone have idea why it doesn't work for the module init() function and all the registers need to be saved?

regards

STanda


#if 0
/*
 * this don't work?!
 * why need the registers to be preserved?
 * all the modules are gcc compiled too ...
 */
static void *
module_init(void *initfunc, struct kerinfo *k)
{
    void * _cdecl (*init)(struct kerinfo *);

    init = initfunc;
    return (*init)(k);
}
#else
static void * module_init(void *initfunc, struct kerinfo *k)
{
register void *ret __asm__("d0"); __asm__ volatile ( "moveml d3-d7/a3-a6,sp@-;" "movl %2,sp@-;" "movl %1,a0;" "jsr a0@;" "addqw #4,sp;" "moveml sp@+,d3-d7/a3-a6;" : "=r"(ret) /* outputs */ : "g"(initfunc), "r"(k) /* inputs */ : "d0", "d1", "d2", "a0", "a1", "a2", /* clobbered regs */ "memory" ); return ret; }
#endif