⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 oktagon_io.s

📁 linux和2410结合开发 用他可以生成2410所需的zImage文件
💻 S
字号:
/* -*- mode: asm -*- * Due to problems while transferring data I've put these routines as assembly * code. * Since I'm no PPC assembler guru, the code is just the assembler version ofint oktag_to_io(long *paddr,long *addr,long len){  long *addr2 = addr;  for(len=(len+sizeof(long)-1)/sizeof(long);len--;)    *paddr = *addr2++;  return addr2 - addr;}int oktag_from_io(long *addr,long *paddr,long len){  long *addr2 = addr;  for(len=(len+sizeof(long)-1)/sizeof(long);len--;)    *addr2++ = *paddr;  return addr2 - addr;} * assembled using gcc -O2 -S, with two exception catch points where data * is moved to/from the IO register. */#include <linux/config.h>#ifdef CONFIG_APUS	.file	"oktagon_io.c"gcc2_compiled.:/*	.section ".text"*/	.align 2	.globl oktag_to_io	.type	 oktag_to_io,@functionoktag_to_io:	addi 5,5,3	srwi 5,5,2	cmpwi 1,5,0	mr 9,3	mr 3,4	addi 5,5,-1	bc 12,6,.L3.L5:	cmpwi 1,5,0	lwz 0,0(3)	addi 3,3,4	addi 5,5,-1exp1:	stw 0,0(9)	bc 4,6,.L5.L3:ret1:	subf 3,4,3	srawi 3,3,2	blr.Lfe1:	.size	 oktag_to_io,.Lfe1-oktag_to_io	.align 2	.globl oktag_from_io	.type	 oktag_from_io,@functionoktag_from_io:	addi 5,5,3	srwi 5,5,2	cmpwi 1,5,0	mr 9,3	addi 5,5,-1	bc 12,6,.L9.L11:	cmpwi 1,5,0exp2:	lwz 0,0(4)	addi 5,5,-1	stw 0,0(3)	addi 3,3,4	bc 4,6,.L11.L9:ret2:	subf 3,9,3	srawi 3,3,2	blr.Lfe2:	.size	 oktag_from_io,.Lfe2-oktag_from_io	.ident	"GCC: (GNU) egcs-2.90.29 980515 (egcs-1.0.3 release)"/* * Exception table. * Second longword shows where to jump when an exception at the addr the first * longword is pointing to is caught. */.section __ex_table,"a"	.align	2oktagon_except:	.long	exp1,ret1	.long	exp2,ret2#else/*The code which follows is for 680x0 based assembler and is meant forLinux/m68k. It was created by cross compiling the code using theinstructions given above. I then added the four labels used in theexception handler table at the bottom of this file.- Kevin <kcozens@interlog.com>*/#ifdef CONFIG_AMIGA	.file	"oktagon_io.c"	.version	"01.01"gcc2_compiled.:.text	.align 	2.globl oktag_to_io	.type	 oktag_to_io,@functionoktag_to_io:	link.w %a6,#0	move.l %d2,-(%sp)	move.l 8(%a6),%a1	move.l 12(%a6),%d1	move.l %d1,%a0	move.l 16(%a6),%d0	addq.l #3,%d0	lsr.l #2,%d0	subq.l #1,%d0	moveq.l #-1,%d2	cmp.l %d0,%d2	jbeq .L3.L5:exp1:	move.l (%a0)+,(%a1)	dbra %d0,.L5	clr.w %d0	subq.l #1,%d0	jbcc .L5.L3:ret1:	move.l %a0,%d0	sub.l %d1,%d0	asr.l #2,%d0	move.l -4(%a6),%d2	unlk %a6	rts.Lfe1:	.size	 oktag_to_io,.Lfe1-oktag_to_io	.align 	2.globl oktag_from_io	.type	 oktag_from_io,@functionoktag_from_io:	link.w %a6,#0	move.l %d2,-(%sp)	move.l 8(%a6),%d1	move.l 12(%a6),%a1	move.l %d1,%a0	move.l 16(%a6),%d0	addq.l #3,%d0	lsr.l #2,%d0	subq.l #1,%d0	moveq.l #-1,%d2	cmp.l %d0,%d2	jbeq .L9.L11:exp2:	move.l (%a1),(%a0)+	dbra %d0,.L11	clr.w %d0	subq.l #1,%d0	jbcc .L11.L9:ret2:	move.l %a0,%d0	sub.l %d1,%d0	asr.l #2,%d0	move.l -4(%a6),%d2	unlk %a6	rts.Lfe2:	.size	 oktag_from_io,.Lfe2-oktag_from_io	.ident	"GCC: (GNU) 2.7.2.1"/* * Exception table. * Second longword shows where to jump when an exception at the addr the first * longword is pointing to is caught. */.section __ex_table,"a"	.align	2oktagon_except:	.long	exp1,ret1	.long	exp2,ret2#endif#endif

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -