Index: src/lib/func.c
===================================================================
--- src/lib/func.c	(revision 9db5b66ca088c0a98965fe9d47a06117c9df7272)
+++ src/lib/func.c	(revision da585a52045238cf4d613295769429747b2a4670)
@@ -33,6 +33,12 @@
 #include <arch.h>
 
-__u32	haltstate = 0;
+__u32	haltstate = 0; /**< Halt flag */
 
+
+/** Halt wrapper
+ *
+ * Set halt flag and halt the cpu.
+ *
+ */
 void halt(void)
 {
@@ -44,7 +50,15 @@
 
 
-/*
- * returns 0 if src == dst
- * otherwise returns 1
+/** Compare two NULL terminated strings
+ *
+ * Do a char-by-char comparment of two NULL terminated strings.
+ * The strings are considered equal iff they have the same
+ * length and consist of the same characters.
+ *
+ * @param src First string to compare.
+ * @param dst Second string to compare.
+ *
+ * @return 0 if the strings are equal, 1 otherwise.
+ *
  */
 int strcmp(char *src, char *dst)
Index: src/lib/list.c
===================================================================
--- src/lib/list.c	(revision 9db5b66ca088c0a98965fe9d47a06117c9df7272)
+++ src/lib/list.c	(revision da585a52045238cf4d613295769429747b2a4670)
@@ -29,4 +29,16 @@
 #include <list.h>
 
+
+/** Check for membership
+ *
+ * Check whether link is contained in the list head.
+ * The membership is defined as pointer equivalence.
+ *
+ * @param link Item to look for.
+ * @param head List to look in.
+ *
+ * @return 1 if link is contained in head, 0 otherwise.
+ *
+ */
 int list_member(link_t *link, link_t *head)
 {
@@ -45,4 +57,15 @@
 }
 
+
+/** Concatenate two lists
+ *
+ * Concatenate lists head1 and head2, producing a single
+ * list head1 containing items from both (in head1, head2
+ * order) and empty list head2.
+ *
+ * @param head1 First list and concatenated output
+ * @param head2 Second list and empty output.
+ *
+ */
 void list_concat(link_t *head1, link_t *head2)
 {
Index: src/lib/memstr.c
===================================================================
--- src/lib/memstr.c	(revision 9db5b66ca088c0a98965fe9d47a06117c9df7272)
+++ src/lib/memstr.c	(revision da585a52045238cf4d613295769429747b2a4670)
@@ -30,4 +30,16 @@
 #include <arch/types.h>
 
+
+/** Copy block of memory
+ *
+ * Copy cnt bytes from src address to dst address.
+ * The copying is done byte-by-byte. The source
+ * and destination memory areas cannot overlap.
+ *
+ * @param src Origin address to copy from.
+ * @param dst Origin address to copy to.
+ * @param cnt Number of bytes to copy.
+ *
+ */
 void _memcopy(__address src, __address dst, int cnt)
 {
@@ -38,4 +50,15 @@
 }
 
+
+/** Fill block of memory
+ *
+ * Fill cnt bytes at dst address with the value x.
+ * The filling is done byte-by-byte.
+ *
+ * @param dst Origin address to fill.
+ * @param cnt Number of bytes to fill.
+ * @param x   Value to fill.
+ *
+ */
 void _memsetb(__address dst, int cnt, __u8 x)
 {
