summaryrefslogtreecommitdiff
path: root/fs/yaffs2/yaffs_hweight.c
diff options
context:
space:
mode:
authorCharles Manning <cdhmanning@gmail.com>2012-05-09 16:55:17 +0000
committerWolfgang Denk <wd@denx.de>2012-08-09 23:39:18 +0200
commit753ac610880e6e563d0384bb114f8b41df89e520 (patch)
tree049dc45790bc6f66dd696d4cd671fd6a2cae4473 /fs/yaffs2/yaffs_hweight.c
parent3874a377451e4d1f45710f5bf801dd96e8b8f67e (diff)
downloadu-boot-imx-753ac610880e6e563d0384bb114f8b41df89e520.zip
u-boot-imx-753ac610880e6e563d0384bb114f8b41df89e520.tar.gz
u-boot-imx-753ac610880e6e563d0384bb114f8b41df89e520.tar.bz2
u-boot: Update yaffs2 file system
This patch updates the yaffs2 in u-boot to correspond to git://www.aleph1.co.uk/yaffs2 commit id 9ee5d0643e559568dbe62215f76e0a7bd5a63d93 Signed-off-by: Charles Manning <cdhmanning@gmail.com>
Diffstat (limited to 'fs/yaffs2/yaffs_hweight.c')
-rw-r--r--fs/yaffs2/yaffs_hweight.c52
1 files changed, 52 insertions, 0 deletions
diff --git a/fs/yaffs2/yaffs_hweight.c b/fs/yaffs2/yaffs_hweight.c
new file mode 100644
index 0000000..d96773e
--- /dev/null
+++ b/fs/yaffs2/yaffs_hweight.c
@@ -0,0 +1,52 @@
+/*
+ * YAFFS: Yet Another Flash File System. A NAND-flash specific file system.
+ *
+ * Copyright (C) 2002-2011 Aleph One Ltd.
+ * for Toby Churchill Ltd and Brightstar Engineering
+ *
+ * Created by Charles Manning <charles@aleph1.co.uk>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 as
+ * published by the Free Software Foundation.
+ */
+
+/* These functions have been renamed to hweightxx to match the
+ * equivaqlent functions in the Linux kernel.
+ */
+
+#include "yaffs_hweight.h"
+
+static const char yaffs_count_bits_table[256] = {
+ 0, 1, 1, 2, 1, 2, 2, 3, 1, 2, 2, 3, 2, 3, 3, 4,
+ 1, 2, 2, 3, 2, 3, 3, 4, 2, 3, 3, 4, 3, 4, 4, 5,
+ 1, 2, 2, 3, 2, 3, 3, 4, 2, 3, 3, 4, 3, 4, 4, 5,
+ 2, 3, 3, 4, 3, 4, 4, 5, 3, 4, 4, 5, 4, 5, 5, 6,
+ 1, 2, 2, 3, 2, 3, 3, 4, 2, 3, 3, 4, 3, 4, 4, 5,
+ 2, 3, 3, 4, 3, 4, 4, 5, 3, 4, 4, 5, 4, 5, 5, 6,
+ 2, 3, 3, 4, 3, 4, 4, 5, 3, 4, 4, 5, 4, 5, 5, 6,
+ 3, 4, 4, 5, 4, 5, 5, 6, 4, 5, 5, 6, 5, 6, 6, 7,
+ 1, 2, 2, 3, 2, 3, 3, 4, 2, 3, 3, 4, 3, 4, 4, 5,
+ 2, 3, 3, 4, 3, 4, 4, 5, 3, 4, 4, 5, 4, 5, 5, 6,
+ 2, 3, 3, 4, 3, 4, 4, 5, 3, 4, 4, 5, 4, 5, 5, 6,
+ 3, 4, 4, 5, 4, 5, 5, 6, 4, 5, 5, 6, 5, 6, 6, 7,
+ 2, 3, 3, 4, 3, 4, 4, 5, 3, 4, 4, 5, 4, 5, 5, 6,
+ 3, 4, 4, 5, 4, 5, 5, 6, 4, 5, 5, 6, 5, 6, 6, 7,
+ 3, 4, 4, 5, 4, 5, 5, 6, 4, 5, 5, 6, 5, 6, 6, 7,
+ 4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8
+};
+
+int yaffs_hweight8(u8 x)
+{
+ int ret_val;
+ ret_val = yaffs_count_bits_table[x];
+ return ret_val;
+}
+
+int yaffs_hweight32(u32 x)
+{
+ return yaffs_hweight8(x & 0xff) +
+ yaffs_hweight8((x >> 8) & 0xff) +
+ yaffs_hweight8((x >> 16) & 0xff) +
+ yaffs_hweight8((x >> 24) & 0xff);
+}