aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMaxime Ripard <maxime.ripard@free-electrons.com>2017-02-27 18:22:01 +0100
committerJagan Teki <jagan@amarulasolutions.com>2017-04-07 11:23:45 +0530
commit71d2c07028ce87d3aeca4e1220fb6dcbfd7bb22f (patch)
tree650e205df269b4c2d4c96ed948d70f12cd6d2342
parentea3f750c73e3af268ab6967f95a8d0f7a22cddc5 (diff)
downloadu-boot-71d2c07028ce87d3aeca4e1220fb6dcbfd7bb22f.zip
u-boot-71d2c07028ce87d3aeca4e1220fb6dcbfd7bb22f.tar.gz
u-boot-71d2c07028ce87d3aeca4e1220fb6dcbfd7bb22f.tar.bz2
bch: Allow to build for the host
We will need the bch functions in the tool to generate the SPL images for the Allwinner SoCs. Do the needed adjustments so that we can use it on the host. Signed-off-by: Maxime Ripard <maxime.ripard@free-electrons.com> Reviewed-by: Tom Rini <trini@konsulko.com> Reviewed-by: Jagan Teki <jagan@openedev.com>
-rw-r--r--lib/bch.c48
1 files changed, 48 insertions, 0 deletions
diff --git a/lib/bch.c b/lib/bch.c
index 147715a..ec53483 100644
--- a/lib/bch.c
+++ b/lib/bch.c
@@ -54,10 +54,27 @@
* finite fields GF(2^q). In Rapport de recherche INRIA no 2829, 1996.
*/
+#ifndef USE_HOSTCC
#include <common.h>
#include <ubi_uboot.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 <linux/bch.h>
@@ -95,6 +112,37 @@ struct gf_poly_deg1 {
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
*/