2 * Due to problems while transferring data I've put these routines as assembly
4 * Since I'm no PPC assembler guru, the code is just the assembler version of
6 int oktag_to_io(long *paddr,long *addr,long len)
9 for(len=(len+sizeof(long)-1)/sizeof(long);len--;)
14 int oktag_from_io(long *addr,long *paddr,long len)
17 for(len=(len+sizeof(long)-1)/sizeof(long);len--;)
22 * assembled using gcc -O2 -S, with two exception catch points where data
23 * is moved to/from the IO register.
26 #include <linux/config.h>
38 .type oktag_to_io,@function
59 .size oktag_to_io,.Lfe1-oktag_to_io
62 .type oktag_from_io,@function
82 .size oktag_from_io,.Lfe2-oktag_from_io
83 .ident "GCC: (GNU) egcs-2.90.29 980515 (egcs-1.0.3 release)"
87 * Second longword shows where to jump when an exception at the addr the first
88 * longword is pointing to is caught.
91 .section __ex_table,"a"
100 The code which follows is for 680x0 based assembler and is meant for
101 Linux/m68k. It was created by cross compiling the code using the
102 instructions given above. I then added the four labels used in the
103 exception handler table at the bottom of this file.
104 - Kevin <kcozens@interlog.com>
115 .type oktag_to_io,@function
146 .size oktag_to_io,.Lfe1-oktag_to_io
149 .type oktag_from_io,@function
179 .size oktag_from_io,.Lfe2-oktag_from_io
180 .ident "GCC: (GNU) 2.7.2.1"
184 * Second longword shows where to jump when an exception at the addr the first
185 * longword is pointing to is caught.
188 .section __ex_table,"a"