Subject: Re: video_lkm
To: None <paul@pgoyette.bdt.com>
From: Taras Ivanenko <ivanenko@ctpa03.mit.edu>
List: port-mac68k
Date: 02/17/1997 15:08:51
Paul,
Here is the code from macrom.c:
asm("
movl %2, a1
movw %3, d1
movl %4, d0
movl %5, a0
jbsr a1@
movl a0, %0
movl d0, %1"
: "=g" (a0bucket), "=g" (d0bucket)
: "g" (trapaddr), "g" (trapword),
"m" (frame->f_regs[0]), "m" (frame->f_regs[8])
: "d0", "d1", "a0", "a1", "a6"
);
As you may notice, a1 is used to keep the address of a trap
handler. Change it to a2 and blockmove() will work fine. In fact, the
cleanest way to call function is to put the address of a function to
stack, restore all registers and then do return.
Taras Ivanenko.