From: Stefan E. <se...@us...> - 2002-10-02 11:25:11
|
Update of /cvsroot/blob/blob/src/blob In directory usw-pr-cvs1:/tmp/cvs-serv1534 Modified Files: memsetup-sa1110.S Log Message: - removed kernel include - we have _all_ defines in memsetup.h. If you need more, add them there. These defines are actually _different_ than their kernel counterparts. We use relative adressing here, and thus need offsets, not absolute values. DONT add new offsets to this file, please. Add them in memsetup.h instead. And please, absolutely DONT include kernel include files. They change. They will change again. Blob should be independant of the kernel source. Index: memsetup-sa1110.S =================================================================== RCS file: /cvsroot/blob/blob/src/blob/memsetup-sa1110.S,v retrieving revision 1.14 retrieving revision 1.15 diff -u -d -r1.14 -r1.15 --- memsetup-sa1110.S 25 Jul 2002 17:26:41 -0000 1.14 +++ memsetup-sa1110.S 2 Oct 2002 11:25:08 -0000 1.15 @@ -44,8 +44,16 @@ # include <blob/config.h> #endif +/*********************************************************************** + * NOTICE: + * PLEASE dont use kernel headers. Why? Because it fscks up everything + * as soon as they change. And yes, they change. And we're dependant of + * the kernel version the user has installed, and that's bad. + * + * We want blob to compile right out of the box. + * - stefan + */ #define __ASSEMBLY__ -#include <blob/sa1100.h> #define BLOB_NEED_MEMCONFIG #include <blob/memsetup.h> #include <blob/arch.h> @@ -53,14 +61,9 @@ .text .globl memsetup -MEM_REG_BASE: .long 0xa0000000 +MEM_REG_BASE: .long MEM_CONF_BASE MEM_START: .long MEMORY_START - -PWR_BASE: .long 0x90020000 -#define _PSSR 0x04 -#define _PSPR 0x08 -#define _PPCR 0x14 -#define _POSR 0x1C +PWR_BASE: .long PM_BASE /* Architecture headers can customized the memory setup behavior with * the following defines: @@ -106,6 +109,14 @@ ldr r0, MEM_REG_BASE adr r1, MEMORY_CONFIG + /* OK folks. These values are _offsets_ from + * MEM_REG_BASE and have _nothing_ to do with + * the kernel include file values, which defines + * them as _absolute_ values. + * + * The following works _only_ because the table above + * uses the same offsets. + */ ldr r2, [r1, #_MDCNFG ] str r2, [r0, #_MDCNFG ] @@ -142,7 +153,7 @@ /* Step 3: clear DH * NOTE: do NOT clear SSS, the kernel wants it set */ ldr r1, PWR_BASE - mov r2, #0x08 /* PSSR_DH */ + mov r2, #PSSR_DH str r2, [r1, #_PSSR] /* clear DH by writing 1 to it */ |