1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12:
13:
14: #include <sys/machine.h>
15: #ifdef CPU_CORE_RXV2
16:
17: 18: 19: 20:
21:
22: #include "kernel.h"
23: #include "../../../sysdepend.h"
24:
25: #include <tm/tmonitor.h>
26:
27:
28:
29: EXPORT void *knl_lowmem_top;
30: EXPORT void *knl_lowmem_limit;
31:
32: IMPORT const void *_data_org;
33: IMPORT const void *_data_start;
34: IMPORT const void *_data_end;
35: IMPORT const void *_bss_start;
36: IMPORT const void *_bss_end;
37: #if USE_NOINIT
38: IMPORT const void *_noinit_end;
39: #endif
40:
41:
42: 43: 44:
45:
46: EXPORT void reset_main(void)
47: {
48: UW *src, *top, *end;
49: INT i;
50:
51:
52: knl_startup_hw();
53:
54: #if !USE_STATIC_IVT
55:
56: src = (UW*)knl_int_vect_rom;;
57: top = (UW*)knl_int_vect_ram;
58: for(i=0; i < (N_INTVEC); i++) {
59: *top++ = *src++;
60: }
61:
62: knl_set_intb((UW)knl_int_vect_ram);
63:
64:
65: src = (UW*)knl_hll_inthdr_rom;;
66: top = (UW*)knl_hll_inthdr_ram;
67: for(i=0; i < (N_INTVEC); i++) {
68: *top++ = *src++;
69: }
70: #endif
71:
72:
73: src = (UW*)&_data_org;;
74: top = (UW*)&_data_start;
75: end = (UW*)&_data_end;
76: while(top != end) {
77: *top++ = *src++;
78: }
79:
80:
81: #if USE_NOINIT
82: top = (UW*)&_noinit_end;
83: #else
84: top = (UW*)&_bss_start;
85: #endif
86: for(i = ((INT)&_bss_end - (INT)&_bss_start)/sizeof(UW); i > 0 ; i--) {
87: *top++ = 0;
88: }
89:
90: #if USE_IMALLOC
91:
92: if(INTERNAL_RAM_START > SYSTEMAREA_TOP) {
93: knl_lowmem_top = (UW*)INTERNAL_RAM_START;
94: } else {
95: knl_lowmem_top = (UW*)SYSTEMAREA_TOP;
96: }
97: if((UW)knl_lowmem_top < (UW)&_bss_end) {
98: knl_lowmem_top = (UW*)&_bss_end;
99: }
100:
101: if((SYSTEMAREA_END != 0) && (INTERNAL_RAM_END > CNF_SYSTEMAREA_END)) {
102: knl_lowmem_limit = (UW*)(SYSTEMAREA_END - EXC_STACK_SIZE);
103: } else {
104: knl_lowmem_limit = (UW*)(INTERNAL_RAM_END - EXC_STACK_SIZE);
105: }
106: #endif
107:
108:
109: main();
110: while(1);
111: }
112:
113: #endif