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.
37 .type oktag_to_io,@function
58 .size oktag_to_io,.Lfe1-oktag_to_io
61 .type oktag_from_io,@function
81 .size oktag_from_io,.Lfe2-oktag_from_io
82 .ident "GCC: (GNU) egcs-2.90.29 980515 (egcs-1.0.3 release)"
86 * Second longword shows where to jump when an exception at the addr the first
87 * longword is pointing to is caught.
90 .section __ex_table,"a"
99 The code which follows is for 680x0 based assembler and is meant for
100 Linux/m68k. It was created by cross compiling the code using the
101 instructions given above. I then added the four labels used in the
102 exception handler table at the bottom of this file.
103 - Kevin <kcozens@interlog.com>
114 .type oktag_to_io,@function
145 .size oktag_to_io,.Lfe1-oktag_to_io
148 .type oktag_from_io,@function
178 .size oktag_from_io,.Lfe2-oktag_from_io
179 .ident "GCC: (GNU) 2.7.2.1"
183 * Second longword shows where to jump when an exception at the addr the first
184 * longword is pointing to is caught.
187 .section __ex_table,"a"