auxFormat.c 3.4 KB
Newer Older
Zhao Xuefeng committed
1
#include"auxFormat.h"
Wentao Zhang committed
2 3 4 5 6 7 8 9 10

void packU32FormatToThreePacket(u32 *out, u8 *in) {
	u32 t0 = U32BIG(((u32* )in)[0]);
	puckU32ToThree_3(t0);
	out[0] = ((((t0 & 0x30000000) >> 20) | ((t0 & 0xff0000) >> 16)));
	out[1] = (((t0 & 0x80000000) >> 21) | ((t0 & 0xc000000) >> 18)
			| ((t0 & 0xff00) >> 8));
	out[2] = (((t0 & 0x40000000) >> 20) | ((t0 & 0x03000000) >> 16)
			| (t0 & 0x000000ff));
Zhao Xuefeng committed
11
}
Wentao Zhang committed
12 13 14 15 16 17 18 19
void unpackU32FormatToThreePacket(u8 *out, u32 *in) {
	u32 t[3] = { 0 };\
	u32 t0 = in[0], t1 = in[1], t2 = in[2];
	t[0] = ((t1 & 0x400) << 21) | ((t2 & 0x400) << 20) | ((t0 & 0x300) << 20)
			| ((t1 & 0x300) << 18) | ((t2 & 0x300) << 16) | ((t0 & 0xff) << 16)
			| ((t1 & 0xff) << 8) | (t2 & 0xff);
	unpuckU32ToThree_3(t[0]);
	*(u32*) (out) = t[0];
Zhao Xuefeng committed
20
}
Wentao Zhang committed
21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41
void packU96FormatToThreePacket(u32 *out, u8 *in) {
	u32 t0 = U32BIG(((u32* )in)[0]), t1 = U32BIG(((u32* )in)[1]), t2 = U32BIG(
			((u32* )in)[2]);
	puckU32ToThree_3(t0);
	puckU32ToThree_3(t1);
	puckU32ToThree_3(t2);
	out[0] = (((t2 & 0x80000000)) | ((t2 & 0xc000000) << 3)
			| ((t2 & 0xff00) << 13))
			| (((t1 & 0x40000000) >> 10) | ((t1 & 0x03000000) >> 6)
					| ((t1 & 0x000000ff) << 10))
			| ((((t0 & 0x30000000) >> 20) | ((t0 & 0xff0000) >> 16)));
	out[1] = (((t2 & 0x40000000) << 1) | ((t2 & 0x03000000) << 5)
			| ((t2 & 0x000000ff) << 21))
			| ((((t1 & 0x30000000) >> 9) | ((t1 & 0xff0000) >> 5))
					| (((t0 & 0x80000000) >> 21) | ((t0 & 0xc000000) >> 18)
							| ((t0 & 0xff00) >> 8)));
	out[2] = ((((t2 & 0x30000000) << 2) | ((t2 & 0xff0000) << 6))
			| (((t1 & 0x80000000) >> 10) | ((t1 & 0xc000000) >> 7)
					| ((t1 & 0xff00) << 3))
			| (((t0 & 0x40000000) >> 20) | ((t0 & 0x03000000) >> 16)
					| (t0 & 0x000000ff)));
Zhao Xuefeng committed
42
}
Wentao Zhang committed
43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59
void unpackU96FormatToThreePacket(u8 *out, u32 *in) {
	u32 t[3] = { 0 };\
	u32 t0 = in[0], t1 = in[1], t2 = in[2];
	t[0] = ((t1 & 0x400) << 21) | ((t2 & 0x400) << 20) | ((t0 & 0x300) << 20)
			| ((t1 & 0x300) << 18) | ((t2 & 0x300) << 16) | ((t0 & 0xff) << 16)
			| ((t1 & 0xff) << 8) | (t2 & 0xff);
	t[1] = ((t2 & 0x200000) << 10) | ((t0 & 0x100000) << 10)
			| ((t1 & 0x180000) << 9) | ((t2 & 0x180000) << 7)
			| ((t0 & 0xc0000) << 6) | ((t1 & 0x7f800) << 5)
			| ((t2 & 0x7f800) >> 3) | ((t0 & 0x3fc00) >> 10);
	t[2] = ((t0 & 0x80000000)) | ((t1 & 0x80000000) >> 1)
			| ((t2 & 0xc0000000) >> 2) | ((t0 & 0x60000000) >> 3)
			| ((t1 & 0x60000000) >> 5) | ((t2 & 0x3fc00000) >> 6)
			| ((t0 & 0x1fe00000) >> 13) | ((t1 & 0x1fe00000) >> 21);
	unpuckU32ToThree_3(t[0]);
	unpuckU32ToThree_3(t[1]);
	unpuckU32ToThree_3(t[2]);
Zhao Xuefeng committed
60 61
	memcpy(out, t, 12 * sizeof(unsigned char));
}
Wentao Zhang committed
62 63 64 65 66 67 68 69 70 71

unsigned char constant7Format[80] = {
/*constant7Format[127]: 12*6=72*/
0x01, 0x08, 0x40, 0x02, 0x10, 0x80, 0x05, 0x09, 0x48, 0x42, 0x12, 0x90, 0x85,
		0x0c, 0x41, 0x0a, 0x50, 0x82, 0x15, 0x89, 0x4d, 0x4b, 0x5a, 0xd2, 0x97,
		0x9c, 0xc4, 0x06, 0x11, 0x88, 0x45, 0x0b, 0x58, 0xc2, 0x17, 0x99, 0xcd,
		0x4e, 0x53, 0x9a, 0xd5, 0x8e, 0x54, 0x83, 0x1d, 0xc9, 0x4f, 0x5b, 0xda,
		0xd7, 0x9e, 0xd4, 0x86, 0x14, 0x81, 0x0d, 0x49, 0x4a, 0x52, 0x92, 0x95,
		0x8c, 0x44, 0x03, 0x18, 0xc0, 0x07, 0x19, 0xc8, 0x47, 0x1b, 0xd8, 0xc7,
		0x1e, 0xd1, 0x8f, 0x5c, 0xc3, 0x1f, 0xd9, };
Zhao Xuefeng committed
72
void P384(unsigned int *s, unsigned char *round, unsigned char lunNum) {
Wentao Zhang committed
73 74
	u32 rci, t1, t2;
	unsigned char i;
Zhao Xuefeng committed
75
	for (i = 0; i < lunNum; i++) {
Wentao Zhang committed
76 77
		rci = constant7Format[i];\
		P384_ARC_SC1(rci, s[3], s[6], s[9]);
Zhao Xuefeng committed
78 79
		P384_2SC(s[1],s[4],s[7],s[10],s[2],s[5],s[8],s[11]);\
		P384_SR();\
Wentao Zhang committed
80

Zhao Xuefeng committed
81 82
	}
}