blob: 466995c75b0fcab637fe7f793117912870a18ed4 (
plain) (
tree)
|
|
/*-------------------------------------*/
/* sctns.c */
/* Last change : 10.10.94 */
/*-------------------------------------*/
/*
* $Id$
*/
#include "sctns.h"
#include "pmc901_memmap.h"
/*#include "led.h"*/
/*-------------------------------------*/
/* Temporary nullation of WRITE LED */
#define WRITE_LED(x) errval = x;
void ledcyc()
{
register int i,t;
extern unsigned char * led_array;
register unsigned char * la;
volatile register int k,m;
la = led_array;
i = 1;
loop:
if (i > 9 )
i = 1;
*(unsigned char *) LED_REG = la[i];
for(t=1; t < 0x10000; t++)
k = m + 33;
i++;
goto loop;
}
void copyCodeToRom(void)
{
register int errval = 0;
unsigned int * s;
volatile unsigned int * d;
unsigned int t, i;
volatile unsigned char * z;
extern unsigned char * led_array;
WRITE_LED(0x1);
d = codeRamStart;
*d = 0;
if( *d != 0)
goto error;
WRITE_LED(0x2);
*d = 0xffffffff;
if( *d != 0xffffffff)
goto error;
WRITE_LED(0x3);
t = 1;
for( i=0; i < 31; i++){
*d = t;
if(*d != t)
goto error;
t <<= 1;
}
z = (unsigned char *)codeRamStart;
*z = 0;
if( *z != 0)
goto error;
*z = 0xf;
if( *z != 0xf)
goto error;
WRITE_LED(0x4);
for (s = codeRomStart, d = codeRamStart; d < codeRamEnd; s ++, d ++) {
* d = * s;
}
WRITE_LED(0x5);
for (s = codeRomStart, d = codeRamStart; d < codeRamEnd; s ++, d ++) {
if( * d != * s )
goto error;
}
WRITE_LED(0x6);
return;
error:
while(1){
for(t=1; t < 0x100000; t++)
*(unsigned char *) LED_REG = errval;
for(t=1; t < 0x100000; t++)
*(unsigned char *) LED_REG = led_array[0];
}
}
void zeroBss(void)
{
unsigned int * p;
extern unsigned int bssStart_1[], bssEnd_1[];
for (p = bssStart; p < bssEnd; p ++) {
* p = 0;
}
for (p = bssStart_1; p < bssEnd_1; p ++) {
* p = 0;
}
}
/*-------------*/
/* End of file */
/*-------------*/
|