From: Geert U. <ge...@li...> - 2001-02-14 11:41:02
|
On Wed, 14 Feb 2001, Frank Rudolf Georg Petzold wrote: > On Tue, Feb 13, 2001 at 04:24:59PM +0100, Geert Uytterhoeven wrote: > > What happens if you replace the DPRINTK(...) by mb()? > > I confirm that it somewhat works with debug enabled. Configuration: > 604e/233, 70ns RAM, CV64/3D with 1280x1024-8, XFree 4.0.2 running. > Somwhat means that the data is not entirely correct when arriving at the > printer (I have a PostScript printer). Therefore I get strange results, but > most of it is still readable. > > If I replace the printk with mb() it does not work at all. > > > The fact that it works for some people could be attributed to the CPU (603e vs. > > 604e). > > It seems to be partially a tming problem, but not entirely. As I said, I once > inserted delay loops that would only allow to write about 1 Bps to the CIA, but > that did not help. There must be more to the dprintk call. Does it work if you put a `mb()' in between any two accesses of CIA registers? What is the definition of `mb()' in the APUS tree nowadays? Plain 2.4.2-pre3 has (include/asm-ppc/system.h): | #define mb() __asm__ __volatile__ ("sync" : : : "memory") | #define rmb() __asm__ __volatile__ ("sync" : : : "memory") | #define wmb() __asm__ __volatile__ ("eieio" : : : "memory") Side question: does it work under Linux/m68k? Gr{oetje,eeting}s, Geert -- Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- ge...@li... In personal conversations with technical people, I call myself a hacker. But when I'm talking to journalists I just say "programmer" or something like that. -- Linus Torvalds |