33 lines
		
	
	
		
			528 B
		
	
	
	
		
			C
		
	
	
	
			
		
		
	
	
			33 lines
		
	
	
		
			528 B
		
	
	
	
		
			C
		
	
	
	
 | 
						|
extern char _start_bss;
 | 
						|
extern char end;
 | 
						|
extern char stack;
 | 
						|
 | 
						|
static zeroandrun();
 | 
						|
#pragma noprolog
 | 
						|
 | 
						|
start()
 | 
						|
{
 | 
						|
  asm("mov.w #%off(_stack),sp");
 | 
						|
/*  asm("ldc.w  #0x700,sr");*/
 | 
						|
  asm("ldc.b  #%page(_stack),tp");
 | 
						|
  asm("ldc.b  #%page(_stack),dp");
 | 
						|
  asm("ldc.b  #%page(_stack),ep");
 | 
						|
  /* Can't have anything else in here, since the fp won't be set up
 | 
						|
     so local variables won't work */
 | 
						|
  zeroandrun();
 | 
						|
}
 | 
						|
 | 
						|
static
 | 
						|
zeroandrun()
 | 
						|
{
 | 
						|
  char *p;
 | 
						|
  p = &_start_bss;
 | 
						|
  while (p < &end) 
 | 
						|
    {
 | 
						|
      *p++ = 0;
 | 
						|
    }
 | 
						|
  main();
 | 
						|
  _exit();
 | 
						|
}
 |