diff --git a/include/math.h b/include/math.h new file mode 100644 index 0000000..39a9cda --- /dev/null +++ b/include/math.h @@ -0,0 +1,28 @@ +/* + Copyright (C) 2012, Aaron Lindsay + + This file is part of Aedrix. + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License along + with this program; if not, write to the Free Software Foundation, Inc., + 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + */ + +#include + +#ifndef MATH_H +#define MATH_H + +uint32 log(uint32 i); + +#endif /* MATH_H */ diff --git a/kernel/kernel.mk b/kernel/kernel.mk index 1e0f065..20aec5c 100644 --- a/kernel/kernel.mk +++ b/kernel/kernel.mk @@ -9,6 +9,7 @@ OBJS_$(d) := $(d)/atags.o \ $(d)/framebuffer.o \ $(d)/kmalloc.o \ $(d)/list.o \ + $(d)/math.o \ $(d)/mm.o \ $(d)/mmu.o \ $(d)/print.o \ diff --git a/kernel/math.c b/kernel/math.c new file mode 100644 index 0000000..4a41885 --- /dev/null +++ b/kernel/math.c @@ -0,0 +1,28 @@ +/* + Copyright (C) 2012, Aaron Lindsay + + This file is part of Aedrix. + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License along + with this program; if not, write to the Free Software Foundation, Inc., + 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + */ + +#include + +uint32 log(uint32 i) { + unsigned int l = 1; + while ((i = i>>1)) + l++; + return l; +}