00001
00006 #include "routix/system.h"
00007
00008
00009 #define POSICION_LOADER 0xff800000
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
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
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
00050 kmain();
00051
00052 }
00053
00054
00055
00056
00057
00058
00059
00060