init.c

Go to the documentation of this file.
00001 
00006 #include "routix/system.h"
00007 
00008 
00009 #define POSICION_LOADER         0xff800000      /* ubicacion del kernel.bin por parte del loader */
00010 
00011 
00012 
00013 extern void kmain (void);       
00014 
00015 
00016 extern unsigned char _data_size;
00017 extern unsigned char _code_size;
00018 
00019 
00020 
00021 void init(void)
00022 {
00023         char *origen, *destino; 
00024         long i, largo;
00025         
00026         /* Copiar el kernel */
00027 
00028         destino = (char *) KERNEL_FCODE;
00029         origen = (char *) POSICION_LOADER;
00030         
00031         
00032         for(i=0 ; i < (long) &_code_size; i++)
00033                 *(destino+i) = *(origen+i);
00034         
00035 
00036         __asm__ __volatile__ ("address_X: jmp (address_X - 0xff800000 + 5) ");
00037         
00038         
00039         /* Copiar Datos */
00040 
00041         destino = (char *) KERNEL_FDATA;
00042         origen = (char *) POSICION_LOADER + (long) &_code_size;
00043 
00044         largo= (long) &_data_size;
00045         
00046         for(i=0; i < largo ; i++)
00047                 *(destino+i) = *(origen+i);
00048 
00049         /* Una vez copiado todo en su lugar, saltamos a funcion ppal*/
00050         kmain();
00051 
00052 }
00053 
00054 
00055 
00056 
00057 
00058 
00059 
00060 

Generated on Sun May 30 18:38:34 2004 for Routix OS by doxygen 1.3.6