@ -54,10 +54,27 @@
* finite fields GF ( 2 ^ q ) . In Rapport de recherche INRIA no 2829 , 1996.
* finite fields GF ( 2 ^ q ) . In Rapport de recherche INRIA no 2829 , 1996.
*/
*/
# ifndef USE_HOSTCC
# include <common.h>
# include <common.h>
# include <ubi_uboot.h>
# include <ubi_uboot.h>
# include <linux/bitops.h>
# include <linux/bitops.h>
# else
# include <errno.h>
# include <endian.h>
# include <stdint.h>
# include <stdlib.h>
# include <string.h>
# undef cpu_to_be32
# define cpu_to_be32 htobe32
# define DIV_ROUND_UP(n,d) (((n) + (d) - 1) / (d))
# define kmalloc(size, flags) malloc(size)
# define kzalloc(size, flags) calloc(1, size)
# define kfree free
# define ARRAY_SIZE(arr) (sizeof(arr) / sizeof((arr)[0]))
# endif
# include <asm/byteorder.h>
# include <asm/byteorder.h>
# include <linux/bch.h>
# include <linux/bch.h>
@ -95,6 +112,37 @@ struct gf_poly_deg1 {
unsigned int c [ 2 ] ;
unsigned int c [ 2 ] ;
} ;
} ;
# ifdef USE_HOSTCC
static int fls ( int x )
{
int r = 32 ;
if ( ! x )
return 0 ;
if ( ! ( x & 0xffff0000u ) ) {
x < < = 16 ;
r - = 16 ;
}
if ( ! ( x & 0xff000000u ) ) {
x < < = 8 ;
r - = 8 ;
}
if ( ! ( x & 0xf0000000u ) ) {
x < < = 4 ;
r - = 4 ;
}
if ( ! ( x & 0xc0000000u ) ) {
x < < = 2 ;
r - = 2 ;
}
if ( ! ( x & 0x80000000u ) ) {
x < < = 1 ;
r - = 1 ;
}
return r ;
}
# endif
/*
/*
* same as encode_bch ( ) , but process input data one byte at a time
* same as encode_bch ( ) , but process input data one byte at a time
*/
*/