root/platform/tx1/sub/100g/boot.c

/* [<][>][^][v][top][bottom][index][help] */

DEFINITIONS

This source file includes following definitions.
  1. boot
  2. h_usrInit
  3. h_usrKernelInit
  4. h_usrRoot

   1 #include "lolevel.h"
   2 #include "platform.h"
   3 #include "core.h"
   4 
   5 const char * const new_sa = &_end;
   6 
   7 /* Ours stuff */
   8 extern long wrs_kernel_bss_start;
   9 extern long wrs_kernel_bss_end;
  10 extern void createHook (void *pNewTcb);
  11 extern void deleteHook (void *pTcb);
  12 
  13 
  14 void boot();
  15 
  16 /* "relocated" functions */
  17 void __attribute__((naked,noinline)) h_usrInit(); // Orig. starts at FF81198C
  18 void __attribute__((naked,noinline)) h_usrKernelInit(); // Orig. starts at FF811744
  19 void __attribute__((naked,noinline)) h_usrRoot(); // Orig. starts at FF811A60
  20 
  21 
  22 
  23 void boot()
  24 {
  25 
  26     long *canon_data_src = (void*)0xFFBBE510;  // 0xFF810104
  27     long *canon_data_dst = (void*)0x1900;      // 0xFF810108
  28     long canon_data_len = 0xCEA0;              // 0xFF8100F8
  29     long *canon_bss_start = (void*)(0x1900+0xCEA0);
  30     long canon_bss_len = 0xB84D0 - (long)canon_bss_start; //0xFF810134
  31     long i;
  32 
  33 
  34     asm volatile (
  35         "MRC     p15, 0, R0,c1,c0\n"
  36         "ORR     R0, R0, #0x1000\n"
  37         "ORR     R0, R0, #4\n"
  38         "ORR     R0, R0, #1\n"
  39         "MCR     p15, 0, R0,c1,c0\n"
  40     :::"r0");
  41 
  42     for(i=0;i<canon_data_len/4;i++)
  43         canon_data_dst[i]=canon_data_src[i];
  44 
  45     for(i=0;i<canon_bss_len/4;i++)
  46         canon_bss_start[i]=0;
  47 
  48     asm volatile (
  49         "MRC     p15, 0, R0,c1,c0\n"
  50         "ORR     R0, R0, #0x1000\n"
  51         "BIC     R0, R0, #4\n"
  52         "ORR     R0, R0, #1\n"
  53         "MCR     p15, 0, R0,c1,c0\n"
  54     :::"r0");
  55     
  56     h_usrInit();
  57 }
  58 
  59 
  60 void h_usrInit()        
  61 {
  62     asm volatile (
  63         "STR     LR, [SP,#-4]!\n"
  64         "BL      sub_FF811968\n"
  65         "MOV     R0, #2\n"
  66         "MOV     R1, R0\n"
  67         "BL      sub_FF925020\n" 
  68         "BL      sub_FF918F9C\n" 
  69         "BL      sub_FF8111C4\n"        
  70         "BL      sub_FF811728\n"
  71         "LDR     LR, [SP],#4\n"
  72         "B       h_usrKernelInit\n"
  73     );
  74 }
  75 
  76 void  h_usrKernelInit() 
  77 {
  78     asm volatile (
  79                  "STMFD   SP!, {R4,LR}\n"
  80                  "SUB     SP, SP, #8\n"
  81                  "BL      sub_FF925520\n" 
  82                  "BL      sub_FF93564C\n" 
  83                  "LDR     R3, =0x5720\n"
  84                  "LDR     R2, =0xB4A80\n"
  85                  "LDR     R1, [R3]\n"
  86                  "LDR     R0, =0xB56D0\n"
  87                  "MOV     R3, #0x100\n"
  88                  "BL      sub_FF93123C\n" 
  89                  "LDR     R3, =0x56E0\n"
  90                  "LDR     R0, =0x5A80\n"
  91                  "LDR     R1, [R3]\n"
  92                  "BL      sub_FF93123C\n" 
  93                  "LDR     R3, =0x579C\n"
  94                  "LDR     R0, =0xB56A4\n"
  95                  "LDR     R1, [R3]\n"
  96                  "BL      sub_FF93123C\n" 
  97                  "BL      sub_FF939A08\n" 
  98                  "BL      sub_FF8112AC\n"
  99                  "MOV     R4, #0\n"
 100                  "MOV     R3, R0\n"
 101                  "MOV     R12, #0x800\n"
 102                  "LDR     R0, =h_usrRoot\n" 
 103                  "MOV     R1, #0x4000\n"
 104                  "LDR     R2, =new_sa\n"
 105                  "LDR     R2, [R2]\n"                    
 106                  "STR     R12, [SP]\n"
 107                  "STR     R4, [SP,#4]\n"
 108                  "BL      sub_FF93288C\n" 
 109                  "ADD     SP, SP, #8\n"
 110                  "LDMFD   SP!, {R4,PC}\n"
 111     );
 112 };
 113 
 114 
 115 
 116 void  h_usrRoot() 
 117 {
 118     asm volatile (
 119                  "STMFD   SP!, {R4,R5,LR}\n"
 120                  "MOV     R5, R0\n"
 121                  "MOV     R4, R1\n"
 122                  "BL      sub_FF8119D0\n"
 123                  "MOV     R1, R4\n"
 124                  "MOV     R0, R5\n"
 125                  "BL      sub_FF929FD8\n" 
 126                  "MOV     R1, R4\n"
 127                  "MOV     R0, R5\n"
 128                  "BL      sub_FF92AA50\n" 
 129                  "BL      sub_FF8117E8\n" 
 130                  "BL      sub_FF811704\n"
 131                  "BL      sub_FF811A0C\n"
 132                  "BL      sub_FF8119F0\n"
 133                  "BL      sub_FF811A38\n"
 134                  "BL      sub_FF8119C4\n"
 135 
 136     );
 137 
 138     _taskCreateHookAdd(createHook);
 139     _taskDeleteHookAdd(deleteHook);
 140 
 141     drv_self_hide();
 142 
 143     asm volatile (
 144                  "LDMFD   SP!, {R4,R5,LR}\n"
 145                  "B       sub_FF81136C\n" 
 146     );
 147 }
 148 

/* [<][>][^][v][top][bottom][index][help] */