Training courses

Kernel and Embedded Linux

Bootlin training courses

Embedded Linux, kernel,
Yocto Project, Buildroot, real-time,
graphics, boot time, debugging...

Bootlin logo

Elixir Cross Referencer

//  reg-based SHIFT test program.
# mach: bfin

.include "testutils.inc"
	start


//  Test FDEP with no sign extension

	R0.L = 0xdead;
	R0.H = 0x1234;
	R1.L = 0x0c08;	// pos=12 len=8
	R1.H = 0x00ff;
	R7 = DEPOSIT( R0, R1 );
	DBGA ( R7.L , 0xfead );
	DBGA ( R7.H , 0x123f );

	R0.L = 0xdead;
	R0.H = 0x1234;
	R1.L = 0x0c04;	// pos=12 len=4
	R1.H = 0x00ff;
	R7 = DEPOSIT( R0, R1 );
	DBGA ( R7.L , 0xfead );
	DBGA ( R7.H , 0x1234 );

	R0.L = 0xdead;
	R0.H = 0x1234;
	R1.L = 0x0c05;	// pos=12 len=5
	R1.H = 0x00ff;
	R7 = DEPOSIT( R0, R1 );
	DBGA ( R7.L , 0xfead );
	DBGA ( R7.H , 0x1235 );

	R0.L = 0xdead;
	R0.H = 0x1234;
	R1.L = 0x0010;	// pos=0 len=16
	R1.H = 0xffff;
	R7 = DEPOSIT( R0, R1 );
	DBGA ( R7.L , 0xffff );
	DBGA ( R7.H , 0x1234 );

	R0.L = 0xdead;
	R0.H = 0x1234;
	R1.L = 0x0011;	// pos=0 len=17
	R1.H = 0xffff;
	R7 = DEPOSIT( R0, R1 );
	DBGA ( R7.L , 0xffff );
	DBGA ( R7.H , 0x1234 );

	R0.L = 0xdead;
	R0.H = 0x1234;
	R1.L = 0x0114;	// pos=1 len=20
	R1.H = 0xffff;
	R7 = DEPOSIT( R0, R1 );
	DBGA ( R7.L , 0xffff );
	DBGA ( R7.H , 0x1235 );

	R0.L = 0xdead;
	R0.H = 0x1234;
	R1.L = 0x001f;	// pos=0 len=31
	R1.H = 0xffff;
	R7 = DEPOSIT( R0, R1 );
	DBGA ( R7.L , 0xffff );
	DBGA ( R7.H , 0x1234 );

	R0.L = 0xdead;
	R0.H = 0x1234;
	R1.L = 0x1c04;	// pos=28 len=4
	R1.H = 0xffff;
	R7 = DEPOSIT( R0, R1 );
	DBGA ( R7.L , 0xdead );
	DBGA ( R7.H , 0xf234 );

	R0.L = 0xdead;
	R0.H = 0x0234;
	R1.L = 0x1d04;	// pos=29 len=4
	R1.H = 0xffff;
	R7 = DEPOSIT( R0, R1 );
	DBGA ( R7.L , 0xdead );
	DBGA ( R7.H , 0xe234 );

	R0.L = 0xdead;
	R0.H = 0x0234;
	R1.L = 0x1f04;	// pos=31 len=4
	R1.H = 0xffff;
	R7 = DEPOSIT( R0, R1 );
	DBGA ( R7.L , 0xdead );
	DBGA ( R7.H , 0x8234 );

	R0.L = 0xdead;
	R0.H = 0x0234;
	R1.L = 0x2004;	// pos=32 len=4, same as pos=0 len=4
	R1.H = 0xffff;
	R7 = DEPOSIT( R0, R1 );
	DBGA ( R7.L , 0xdeaf );
	DBGA ( R7.H , 0x0234 );

//  Test FDEP with sign extension

	R0.L = 0xdead;
	R0.H = 0x1234;
	R1.L = 0x0c08;	// pos=12 len=8
	R1.H = 0x00ff;
	R7 = DEPOSIT( R0, R1 ) (X);
	DBGA ( R7.L , 0xfead );
	DBGA ( R7.H , 0xffff );
	CC = AZ;	R7 = CC; DBGA ( R7.L , 0x0 );
	CC = AN;	R7 = CC; DBGA ( R7.L , 0x1 );

	R0.L = 0xdead;
	R0.H = 0x1234;
	R1.L = 0x0c08;	// pos=12 len=8
	R1.H = 0x007f;
	R7 = DEPOSIT( R0, R1 ) (X);
	DBGA ( R7.L , 0xfead );
	DBGA ( R7.H , 0x0007 );
	CC = AZ;	R7 = CC; DBGA ( R7.L , 0x0 );
	CC = AN;	R7 = CC; DBGA ( R7.L , 0x0 );

	R0.L = 0xdea0;
	R0.H = 0x1234;
	R1.L = 0x0110;	// pos=1 len=16
	R1.H = 0xffff;
	R7 = DEPOSIT( R0, R1 ) (X);
	DBGA ( R7.L , 0xfffe );
	DBGA ( R7.H , 0xffff );
	CC = AZ;	R7 = CC; DBGA ( R7.L , 0x0 );
	CC = AN;	R7 = CC; DBGA ( R7.L , 0x1 );

	R0.L = 0xdea0;
	R0.H = 0x1234;
	R1.L = 0x0101;	// pos=1 len=1
	R1.H = 0xffff;
	R7 = DEPOSIT( R0, R1 ) (X);
	DBGA ( R7.L , 0xfffe );
	DBGA ( R7.H , 0xffff );
	CC = AZ;	R7 = CC; DBGA ( R7.L , 0x0 );
	CC = AN;	R7 = CC; DBGA ( R7.L , 0x1 );

	R0.L = 0xdea0;
	R0.H = 0x1234;
	R1.L = 0x0102;	// pos=1 len=2
	R1.H = 0x0001;
	R7 = DEPOSIT( R0, R1 ) (X);
	DBGA ( R7.L , 0x0002 );
	DBGA ( R7.H , 0x0000 );
	CC = AZ;	R7 = CC; DBGA ( R7.L , 0x0 );
	CC = AN;	R7 = CC; DBGA ( R7.L , 0x0 );

	R0.L = 0xdea0;
	R0.H = 0x1234;
	R1.L = 0x0002;	// pos=0 len=2
	R1.H = 0x0001;
	R7 = DEPOSIT( R0, R1 ) (X);
	DBGA ( R7.L , 0x0001 );
	DBGA ( R7.H , 0x0000 );
	CC = AZ;	R7 = CC; DBGA ( R7.L , 0x0 );
	CC = AN;	R7 = CC; DBGA ( R7.L , 0x0 );

	R0.L = 0xdea0;
	R0.H = 0x1234;
	R1.L = 0x0000;	// pos=0 len=0
	R1.H = 0x000f;
	R7 = DEPOSIT( R0, R1 ) (X);
	DBGA ( R7.L , 0x0000 );
	DBGA ( R7.H , 0x0000 );
	CC = AZ;	R7 = CC; DBGA ( R7.L , 0x1 );
	CC = AN;	R7 = CC; DBGA ( R7.L , 0x0 );

	pass