annotate src/cs/system/main/mem_load.c @ 636:57e67ca2e1cb

pcmdata.c: default +CGMI to "FreeCalypso" and +CGMM to model The present change has no effect whatsoever on Falconia-made and Openmoko-made devices on which /pcm/CGMI and /pcm/CGMM files have been programmed in FFS with sensible ID strings by the respective factories, but what should AT+CGMI and AT+CGMM queries return when the device is a Huawei GTM900 or Tango modem that has been converted to FreeCalypso with a firmware change? Before the present change they would return compiled-in defaults of "<manufacturer>" and "<model>", respectively; with the present change the firmware will self-identify as "FreeCalypso GTM900-FC" or "FreeCalypso Tango" on the two respective targets. This firmware identification will become important if someone incorporates an FC-converted GTM900 or Tango modem into a ZeroPhone-style smartphone where some high-level software like ofono will be talking to the modem and will need to properly identify this modem as FreeCalypso, as opposed to some other AT command modem flavor with different quirks. In technical terms, the compiled-in default for the AT+CGMI query (which will always be overridden by the /pcm/CGMI file in FFS if one is present) is now "FreeCalypso" in all configs on all targets; the compiled-in default for the AT+CGMM query (likewise always overridden by /pcm/CGMM if present) is "GTM900-FC" if CONFIG_TARGET_GTM900 or "Tango" if CONFIG_TARGET_TANGO or the original default of "<model>" otherwise.
author Mychaela Falconia <falcon@freecalypso.org>
date Sun, 19 Jan 2020 20:14:58 +0000
parents 838eeafb0051
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
280
081a2b303178 src/cs/system/Main/mem_load.c: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1 /************* Revision Controle System Header *************
081a2b303178 src/cs/system/Main/mem_load.c: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
2 * GSM Layer 1 software
081a2b303178 src/cs/system/Main/mem_load.c: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
3 * MEM_LOAD.C
081a2b303178 src/cs/system/Main/mem_load.c: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
4 *
081a2b303178 src/cs/system/Main/mem_load.c: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
5 * Filename mem_load.c
081a2b303178 src/cs/system/Main/mem_load.c: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
6 * Version 1.6
081a2b303178 src/cs/system/Main/mem_load.c: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
7 * Date 06/20/01
081a2b303178 src/cs/system/Main/mem_load.c: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
8 *
081a2b303178 src/cs/system/Main/mem_load.c: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
9 ************* Revision Controle System Header *************/
081a2b303178 src/cs/system/Main/mem_load.c: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
10
081a2b303178 src/cs/system/Main/mem_load.c: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
11 #ifndef _WINDOWS
081a2b303178 src/cs/system/Main/mem_load.c: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
12 #include "chipset.cfg"
081a2b303178 src/cs/system/Main/mem_load.c: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
13 #include "board.cfg"
081a2b303178 src/cs/system/Main/mem_load.c: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
14 #include "swconfig.cfg"
081a2b303178 src/cs/system/Main/mem_load.c: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
15 #endif
081a2b303178 src/cs/system/Main/mem_load.c: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
16
081a2b303178 src/cs/system/Main/mem_load.c: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
17 #include "l1sw.cfg" /* OP_L1_STANDALONE definition */
081a2b303178 src/cs/system/Main/mem_load.c: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
18
081a2b303178 src/cs/system/Main/mem_load.c: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
19 #if ((((CHIPSET == 3) || (CHIPSET == 4) || (CHIPSET == 5) || (CHIPSET == 6) || (CHIPSET == 7) || \
081a2b303178 src/cs/system/Main/mem_load.c: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
20 (CHIPSET == 8) || (CHIPSET == 9) || (CHIPSET == 10) || (CHIPSET == 11)) && (LONG_JUMP != 0)) || \
081a2b303178 src/cs/system/Main/mem_load.c: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
21 (CHIPSET == 12) ||(CHIPSET == 15))
081a2b303178 src/cs/system/Main/mem_load.c: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
22 /*
081a2b303178 src/cs/system/Main/mem_load.c: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
23 * USE_GZIP flag is used by modem binaries compression feature on P2.
081a2b303178 src/cs/system/Main/mem_load.c: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
24 * For P2 build variants it is defined globally - either in master.cfg (HBB)
081a2b303178 src/cs/system/Main/mem_load.c: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
25 * or P2's configdef *.xml files (UBB).
081a2b303178 src/cs/system/Main/mem_load.c: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
26 * The following definition is for all other platforms - just to
081a2b303178 src/cs/system/Main/mem_load.c: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
27 * suppress compilation warnings.
081a2b303178 src/cs/system/Main/mem_load.c: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
28 */
081a2b303178 src/cs/system/Main/mem_load.c: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
29 #ifndef USE_GZIP
081a2b303178 src/cs/system/Main/mem_load.c: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
30 #define USE_GZIP 0
081a2b303178 src/cs/system/Main/mem_load.c: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
31 #endif
081a2b303178 src/cs/system/Main/mem_load.c: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
32
081a2b303178 src/cs/system/Main/mem_load.c: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
33 #if (OP_L1_STANDALONE == 1)
081a2b303178 src/cs/system/Main/mem_load.c: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
34 #define D_LOAD_START _470_INT_MEM_out_call_load_start
081a2b303178 src/cs/system/Main/mem_load.c: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
35 #define D_RUN_START _470_INT_MEM_out_call_run_start
081a2b303178 src/cs/system/Main/mem_load.c: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
36 #define D_RUN_END _470_INT_MEM_out_call_run_end
081a2b303178 src/cs/system/Main/mem_load.c: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
37 #else
081a2b303178 src/cs/system/Main/mem_load.c: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
38 #define D_LOAD_START _470_S_MEM_out_call_load_start
081a2b303178 src/cs/system/Main/mem_load.c: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
39 #define D_RUN_START _470_S_MEM_out_call_run_start
081a2b303178 src/cs/system/Main/mem_load.c: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
40 #define D_RUN_END _470_S_MEM_out_call_run_end
081a2b303178 src/cs/system/Main/mem_load.c: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
41 #endif
081a2b303178 src/cs/system/Main/mem_load.c: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
42
081a2b303178 src/cs/system/Main/mem_load.c: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
43 typedef unsigned char UWORD8;
081a2b303178 src/cs/system/Main/mem_load.c: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
44 typedef unsigned short int UWORD16;
081a2b303178 src/cs/system/Main/mem_load.c: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
45 typedef unsigned long int UWORD32;
081a2b303178 src/cs/system/Main/mem_load.c: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
46
081a2b303178 src/cs/system/Main/mem_load.c: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
47
081a2b303178 src/cs/system/Main/mem_load.c: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
48 UWORD16 d_checksum1;
081a2b303178 src/cs/system/Main/mem_load.c: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
49 UWORD16 d_checksum2;
081a2b303178 src/cs/system/Main/mem_load.c: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
50
081a2b303178 src/cs/system/Main/mem_load.c: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
51 /* NEW COMPILER MANAGEMENT
081a2b303178 src/cs/system/Main/mem_load.c: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
52 * INT_memset and INT_memcpy, respectively identical to memset and
081a2b303178 src/cs/system/Main/mem_load.c: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
53 * memcpy from the rts library of compiler V2.51, are defined in int.s.
081a2b303178 src/cs/system/Main/mem_load.c: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
54 * They are used to make the initialization of the .bss section and the load
081a2b303178 src/cs/system/Main/mem_load.c: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
55 * of the internal ram code not dependent to the 32-bit alignment.
081a2b303178 src/cs/system/Main/mem_load.c: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
56 * The old code used for the initialization and the load used a loop with
081a2b303178 src/cs/system/Main/mem_load.c: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
57 * 4-byte increment, assuming the 32-bit alignment of the .bss section.
081a2b303178 src/cs/system/Main/mem_load.c: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
58 * This alignment is not true with compiler V2.51.
081a2b303178 src/cs/system/Main/mem_load.c: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
59 * This change applies whatever the compiler version.
081a2b303178 src/cs/system/Main/mem_load.c: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
60 * INT_memset replaces f_zero
081a2b303178 src/cs/system/Main/mem_load.c: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
61 * INT_memcpy replaces f_download
081a2b303178 src/cs/system/Main/mem_load.c: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
62 */
081a2b303178 src/cs/system/Main/mem_load.c: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
63 extern void INT_memset(void *s, int c, UWORD32 n);
081a2b303178 src/cs/system/Main/mem_load.c: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
64 extern void INT_memcpy(void *s1, void *s2, UWORD32 n);
081a2b303178 src/cs/system/Main/mem_load.c: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
65
081a2b303178 src/cs/system/Main/mem_load.c: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
66 #if (OP_L1_STANDALONE == 0) && (BOARD == 35) && (USE_GZIP == 1)
081a2b303178 src/cs/system/Main/mem_load.c: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
67 extern void decompress(unsigned long input_start,
081a2b303178 src/cs/system/Main/mem_load.c: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
68 unsigned long input_length,
081a2b303178 src/cs/system/Main/mem_load.c: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
69 unsigned long output_start);
081a2b303178 src/cs/system/Main/mem_load.c: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
70 #else
081a2b303178 src/cs/system/Main/mem_load.c: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
71
081a2b303178 src/cs/system/Main/mem_load.c: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
72 UWORD16 f_checksum(UWORD8 *p_begin,
081a2b303178 src/cs/system/Main/mem_load.c: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
73 UWORD32 d_length) {
081a2b303178 src/cs/system/Main/mem_load.c: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
74 UWORD16 d_checksum = 0x0000;
081a2b303178 src/cs/system/Main/mem_load.c: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
75
081a2b303178 src/cs/system/Main/mem_load.c: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
76 while(d_length > 0) {
081a2b303178 src/cs/system/Main/mem_load.c: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
77 d_checksum += *(p_begin++);
081a2b303178 src/cs/system/Main/mem_load.c: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
78 d_length --;
081a2b303178 src/cs/system/Main/mem_load.c: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
79 }
081a2b303178 src/cs/system/Main/mem_load.c: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
80
081a2b303178 src/cs/system/Main/mem_load.c: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
81 return(d_checksum);
081a2b303178 src/cs/system/Main/mem_load.c: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
82 }
081a2b303178 src/cs/system/Main/mem_load.c: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
83
081a2b303178 src/cs/system/Main/mem_load.c: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
84 #endif
081a2b303178 src/cs/system/Main/mem_load.c: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
85
081a2b303178 src/cs/system/Main/mem_load.c: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
86 #if (CHIPSET == 12) || (CHIPSET == 15)
081a2b303178 src/cs/system/Main/mem_load.c: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
87 /*
081a2b303178 src/cs/system/Main/mem_load.c: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
88 * Load start address of the interrupt vector table from FLASH into Internal SRAM
081a2b303178 src/cs/system/Main/mem_load.c: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
89 */
081a2b303178 src/cs/system/Main/mem_load.c: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
90 #define C_NUMBER_OF_INTERRUPT_VECTOR 7
081a2b303178 src/cs/system/Main/mem_load.c: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
91 #pragma DATA_SECTION(d_interrupt_load_start,".intload")
081a2b303178 src/cs/system/Main/mem_load.c: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
92 const UWORD32 d_interrupt_load_start=0L;
081a2b303178 src/cs/system/Main/mem_load.c: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
93 extern const UWORD32 IndirectVectorTable[C_NUMBER_OF_INTERRUPT_VECTOR * 2];
081a2b303178 src/cs/system/Main/mem_load.c: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
94
081a2b303178 src/cs/system/Main/mem_load.c: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
95 #define C_INTERRUPT_VECTOR_LOAD_START (UWORD32)((UWORD32)(&d_interrupt_load_start) + 4)
081a2b303178 src/cs/system/Main/mem_load.c: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
96 #define C_INTERRUPT_VECTOR_RUN_START (UWORD32)((UWORD32)&IndirectVectorTable[0])
081a2b303178 src/cs/system/Main/mem_load.c: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
97 #define C_INTERRUPT_VECTOR_LENGTH (UWORD32)(C_NUMBER_OF_INTERRUPT_VECTOR * 2 * sizeof(UWORD32))
081a2b303178 src/cs/system/Main/mem_load.c: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
98 #endif /* (CHIPSET == 12) || (CHIPSET == 15)*/
081a2b303178 src/cs/system/Main/mem_load.c: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
99
081a2b303178 src/cs/system/Main/mem_load.c: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
100
081a2b303178 src/cs/system/Main/mem_load.c: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
101 #if ((LONG_JUMP == 3) || (((CHIPSET==15)||(CHIPSET == 12)) && (LONG_JUMP == 0)))
081a2b303178 src/cs/system/Main/mem_load.c: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
102 /*
081a2b303178 src/cs/system/Main/mem_load.c: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
103 * Load start address of the code downloaded from FLASH into Internal SRAM
081a2b303178 src/cs/system/Main/mem_load.c: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
104 */
081a2b303178 src/cs/system/Main/mem_load.c: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
105 #pragma DATA_SECTION(d_application_load_start,".ldfl")
081a2b303178 src/cs/system/Main/mem_load.c: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
106 const UWORD32 d_application_load_start=0L;
081a2b303178 src/cs/system/Main/mem_load.c: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
107 #if ((OP_WCP == 0) || (OP_L1_STANDALONE == 1))
081a2b303178 src/cs/system/Main/mem_load.c: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
108 #if (TOOL_CHOICE == 0)
081a2b303178 src/cs/system/Main/mem_load.c: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
109 /* NEW COMPILER MANAGEMENT
081a2b303178 src/cs/system/Main/mem_load.c: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
110 * If use of VISUAL LINKER, needs to manage trampoline download.
081a2b303178 src/cs/system/Main/mem_load.c: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
111 * Case of:
081a2b303178 src/cs/system/Main/mem_load.c: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
112 * - TOOL_CHOICE == 0 => compiler v1.22e with vlinker v1.9902
081a2b303178 src/cs/system/Main/mem_load.c: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
113 */
081a2b303178 src/cs/system/Main/mem_load.c: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
114 #if !(((CHIPSET == 12) || (CHIPSET==15)) && (LONG_JUMP == 0))
081a2b303178 src/cs/system/Main/mem_load.c: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
115 extern UWORD8 D_LOAD_START;
081a2b303178 src/cs/system/Main/mem_load.c: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
116 #endif /* (((CHIPSET == 12)||(CHIPSET==15)) && (LONG_JUMP == 0)) */
081a2b303178 src/cs/system/Main/mem_load.c: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
117 #endif /* (TOOL_CHOICE == 0) */
081a2b303178 src/cs/system/Main/mem_load.c: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
118 #endif /* (OP_WCP == 0) */
081a2b303178 src/cs/system/Main/mem_load.c: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
119
081a2b303178 src/cs/system/Main/mem_load.c: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
120 /*
081a2b303178 src/cs/system/Main/mem_load.c: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
121 * Run start address of the code downloaded from FLASH into Internal SRAM
081a2b303178 src/cs/system/Main/mem_load.c: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
122 */
081a2b303178 src/cs/system/Main/mem_load.c: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
123 #pragma DATA_SECTION(d_application_run_start,"S_P_Mem")
081a2b303178 src/cs/system/Main/mem_load.c: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
124 const UWORD32 d_application_run_start = 0L;
081a2b303178 src/cs/system/Main/mem_load.c: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
125 #if ((OP_WCP == 0) || (OP_L1_STANDALONE == 1))
081a2b303178 src/cs/system/Main/mem_load.c: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
126 #if (TOOL_CHOICE == 0)
081a2b303178 src/cs/system/Main/mem_load.c: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
127 /* NEW COMPILER MANAGEMENT
081a2b303178 src/cs/system/Main/mem_load.c: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
128 * If use of VISUAL LINKER, needs to manage trampoline download.
081a2b303178 src/cs/system/Main/mem_load.c: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
129 * Case of:
081a2b303178 src/cs/system/Main/mem_load.c: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
130 * - TOOL_CHOICE == 0 => compiler v1.22e with vlinker v1.9902
081a2b303178 src/cs/system/Main/mem_load.c: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
131 */
081a2b303178 src/cs/system/Main/mem_load.c: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
132 #if !(((CHIPSET == 12)||(CHIPSET==15)) && (LONG_JUMP == 0))
081a2b303178 src/cs/system/Main/mem_load.c: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
133 extern UWORD8 D_RUN_START;
081a2b303178 src/cs/system/Main/mem_load.c: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
134 #endif /* (((CHIPSET == 12)||(CHIPSET==15)) && (LONG_JUMP == 0)) */
081a2b303178 src/cs/system/Main/mem_load.c: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
135 #endif /* (TOOL_CHOICE == 0) */
081a2b303178 src/cs/system/Main/mem_load.c: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
136 #endif /* (OP_WCP == 0) */
081a2b303178 src/cs/system/Main/mem_load.c: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
137
081a2b303178 src/cs/system/Main/mem_load.c: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
138 /*
081a2b303178 src/cs/system/Main/mem_load.c: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
139 * Run end address of the code downloaded from FLASH into Internal SRAM
081a2b303178 src/cs/system/Main/mem_load.c: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
140 */
081a2b303178 src/cs/system/Main/mem_load.c: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
141 #pragma DATA_SECTION(d_application_run_end,"E_P_Mem")
081a2b303178 src/cs/system/Main/mem_load.c: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
142 const UWORD32 d_application_run_end = 0L;
081a2b303178 src/cs/system/Main/mem_load.c: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
143 #if ((OP_WCP == 0) || (OP_L1_STANDALONE == 1))
081a2b303178 src/cs/system/Main/mem_load.c: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
144 #if (TOOL_CHOICE == 0)
081a2b303178 src/cs/system/Main/mem_load.c: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
145 /* NEW COMPILER MANAGEMENT
081a2b303178 src/cs/system/Main/mem_load.c: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
146 * If use of VISUAL LINKER, needs to manage trampoline download.
081a2b303178 src/cs/system/Main/mem_load.c: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
147 * Case of:
081a2b303178 src/cs/system/Main/mem_load.c: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
148 * - TOOL_CHOICE == 0 => compiler v1.22e with vlinker v1.9902
081a2b303178 src/cs/system/Main/mem_load.c: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
149 */
081a2b303178 src/cs/system/Main/mem_load.c: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
150 #if !(((CHIPSET == 12)||(CHIPSET==15)) && (LONG_JUMP == 0))
081a2b303178 src/cs/system/Main/mem_load.c: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
151 extern UWORD8 D_RUN_END;
081a2b303178 src/cs/system/Main/mem_load.c: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
152 #endif /* (((CHIPSET == 12)||(CHIPSET==15)) && (LONG_JUMP == 0)) */
081a2b303178 src/cs/system/Main/mem_load.c: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
153 #endif /* (TOOL_CHOICE == 0) */
081a2b303178 src/cs/system/Main/mem_load.c: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
154 #endif /* (OP_WCP == 0) */
081a2b303178 src/cs/system/Main/mem_load.c: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
155
081a2b303178 src/cs/system/Main/mem_load.c: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
156 /*
081a2b303178 src/cs/system/Main/mem_load.c: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
157 * Application download
081a2b303178 src/cs/system/Main/mem_load.c: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
158 */
081a2b303178 src/cs/system/Main/mem_load.c: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
159 #define C_APPLICATION_LOAD_START (UWORD32)((UWORD32 *)(&d_application_load_start) + 2)
081a2b303178 src/cs/system/Main/mem_load.c: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
160 #define C_APPLICATION_RUN_START (UWORD32)((UWORD32)(&d_application_run_start) + sizeof(UWORD32))
081a2b303178 src/cs/system/Main/mem_load.c: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
161 #define C_APPLICATION_RUN_END (UWORD32)((UWORD32)(&d_application_run_end) + sizeof(UWORD32))
081a2b303178 src/cs/system/Main/mem_load.c: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
162 #define C_APPLICATION_LENGTH (UWORD32)(C_APPLICATION_RUN_END - C_APPLICATION_RUN_START - sizeof(UWORD32))
081a2b303178 src/cs/system/Main/mem_load.c: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
163
081a2b303178 src/cs/system/Main/mem_load.c: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
164 #if ((OP_WCP == 0) || (OP_L1_STANDALONE == 1))
081a2b303178 src/cs/system/Main/mem_load.c: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
165 #if (TOOL_CHOICE == 0)
081a2b303178 src/cs/system/Main/mem_load.c: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
166 /* NEW COMPILER MANAGEMENT
081a2b303178 src/cs/system/Main/mem_load.c: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
167 * If use of VISUAL LINKER, needs to manage trampoline download.
081a2b303178 src/cs/system/Main/mem_load.c: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
168 * Case of:
081a2b303178 src/cs/system/Main/mem_load.c: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
169 * - TOOL_CHOICE == 0 => compiler v1.22e with vlinker v1.9902
081a2b303178 src/cs/system/Main/mem_load.c: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
170 */
081a2b303178 src/cs/system/Main/mem_load.c: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
171 #if !(((CHIPSET == 12)||(CHIPSET==15)) && (LONG_JUMP == 0))
081a2b303178 src/cs/system/Main/mem_load.c: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
172 /*
081a2b303178 src/cs/system/Main/mem_load.c: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
173 * Trampoline download
081a2b303178 src/cs/system/Main/mem_load.c: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
174 */
081a2b303178 src/cs/system/Main/mem_load.c: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
175 #define C_TRAMPOLINE_LOAD_START (UWORD32)(&D_LOAD_START)
081a2b303178 src/cs/system/Main/mem_load.c: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
176 #define C_TRAMPOLINE_RUN_START (UWORD32)(&D_RUN_START)
081a2b303178 src/cs/system/Main/mem_load.c: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
177 #define C_TRAMPOLINE_RUN_END (UWORD32)(&D_RUN_END)
081a2b303178 src/cs/system/Main/mem_load.c: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
178 #define C_TRAMPOLINE_LENGTH (UWORD32)(&D_RUN_END - &D_RUN_START)
081a2b303178 src/cs/system/Main/mem_load.c: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
179 #endif /* (((CHIPSET == 12)||(CHIPSET==15)) && (LONG_JUMP == 0)) */
081a2b303178 src/cs/system/Main/mem_load.c: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
180 #endif /* (TOOL_CHOICE == 0) */
081a2b303178 src/cs/system/Main/mem_load.c: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
181 #endif /* (OP_WCP == 0) */
081a2b303178 src/cs/system/Main/mem_load.c: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
182
081a2b303178 src/cs/system/Main/mem_load.c: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
183 void f_load_int_mem(void) {
081a2b303178 src/cs/system/Main/mem_load.c: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
184 /*
081a2b303178 src/cs/system/Main/mem_load.c: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
185 * Reset checksum of code downloaded
081a2b303178 src/cs/system/Main/mem_load.c: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
186 */
081a2b303178 src/cs/system/Main/mem_load.c: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
187 d_checksum1 = 0; /* Load checksum */
081a2b303178 src/cs/system/Main/mem_load.c: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
188 d_checksum2 = 0; /* Run checksum */
081a2b303178 src/cs/system/Main/mem_load.c: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
189
081a2b303178 src/cs/system/Main/mem_load.c: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
190 /*
081a2b303178 src/cs/system/Main/mem_load.c: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
191 * Reset the Internal memory where the code must be downloaded
081a2b303178 src/cs/system/Main/mem_load.c: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
192 */
081a2b303178 src/cs/system/Main/mem_load.c: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
193 INT_memset((void *)(C_APPLICATION_RUN_START),0,C_APPLICATION_LENGTH);
081a2b303178 src/cs/system/Main/mem_load.c: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
194 #if ((OP_WCP == 0) || (OP_L1_STANDALONE == 1))
081a2b303178 src/cs/system/Main/mem_load.c: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
195 #if (TOOL_CHOICE == 0)
081a2b303178 src/cs/system/Main/mem_load.c: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
196 /* NEW COMPILER MANAGEMENT
081a2b303178 src/cs/system/Main/mem_load.c: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
197 * If use of VISUAL LINKER, needs to manage trampoline download.
081a2b303178 src/cs/system/Main/mem_load.c: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
198 * Case of:
081a2b303178 src/cs/system/Main/mem_load.c: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
199 * - TOOL_CHOICE == 0 => compiler v1.22e with vlinker v1.9902
081a2b303178 src/cs/system/Main/mem_load.c: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
200 */
081a2b303178 src/cs/system/Main/mem_load.c: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
201 #if !(((CHIPSET == 12)||(CHIPSET==15)) && (LONG_JUMP == 0))
081a2b303178 src/cs/system/Main/mem_load.c: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
202 INT_memset((void *)(C_TRAMPOLINE_RUN_START),0,C_TRAMPOLINE_LENGTH);
081a2b303178 src/cs/system/Main/mem_load.c: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
203 #endif
081a2b303178 src/cs/system/Main/mem_load.c: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
204 #endif /* (TOOL_CHOICE == 0) */
081a2b303178 src/cs/system/Main/mem_load.c: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
205
081a2b303178 src/cs/system/Main/mem_load.c: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
206 #if ((CHIPSET == 12)||(CHIPSET==15))
081a2b303178 src/cs/system/Main/mem_load.c: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
207 INT_memset((void *)(C_INTERRUPT_VECTOR_RUN_START),0,C_INTERRUPT_VECTOR_LENGTH);
081a2b303178 src/cs/system/Main/mem_load.c: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
208 #endif
081a2b303178 src/cs/system/Main/mem_load.c: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
209 #endif /* (OP_WCP == 0) */
081a2b303178 src/cs/system/Main/mem_load.c: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
210
081a2b303178 src/cs/system/Main/mem_load.c: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
211 #if (OP_L1_STANDALONE == 0) && (BOARD == 35) && (USE_GZIP == 1)
081a2b303178 src/cs/system/Main/mem_load.c: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
212 #define C_GZIP_START (C_APPLICATION_LOAD_START)
081a2b303178 src/cs/system/Main/mem_load.c: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
213 #define C_GZIP_LENGTH (*(UWORD32*)C_APPLICATION_LOAD_START)
081a2b303178 src/cs/system/Main/mem_load.c: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
214 #define C_GZIP_OUT (C_APPLICATION_RUN_START - sizeof(UWORD32))
081a2b303178 src/cs/system/Main/mem_load.c: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
215
081a2b303178 src/cs/system/Main/mem_load.c: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
216 /* De-compress on-the-fly and load to internal RAM */
081a2b303178 src/cs/system/Main/mem_load.c: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
217 decompress(C_GZIP_START, /* load start (compressed) */
081a2b303178 src/cs/system/Main/mem_load.c: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
218 C_GZIP_LENGTH, /* compressed length */
081a2b303178 src/cs/system/Main/mem_load.c: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
219 C_GZIP_OUT); /* run start */
081a2b303178 src/cs/system/Main/mem_load.c: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
220 #else
081a2b303178 src/cs/system/Main/mem_load.c: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
221 /*
081a2b303178 src/cs/system/Main/mem_load.c: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
222 * Compute checksum on code in FLASH (code and trampoline functions)
081a2b303178 src/cs/system/Main/mem_load.c: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
223 */
081a2b303178 src/cs/system/Main/mem_load.c: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
224 d_checksum1 = f_checksum((UWORD8 *)(C_APPLICATION_LOAD_START), C_APPLICATION_LENGTH);
081a2b303178 src/cs/system/Main/mem_load.c: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
225 #if ((OP_WCP == 0) || (OP_L1_STANDALONE == 1))
081a2b303178 src/cs/system/Main/mem_load.c: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
226 #if (TOOL_CHOICE == 0)
081a2b303178 src/cs/system/Main/mem_load.c: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
227 /* NEW COMPILER MANAGEMENT
081a2b303178 src/cs/system/Main/mem_load.c: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
228 * If use of VISUAL LINKER, needs to manage trampoline download.
081a2b303178 src/cs/system/Main/mem_load.c: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
229 * Case of:
081a2b303178 src/cs/system/Main/mem_load.c: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
230 * - TOOL_CHOICE == 0 => compiler v1.22e with vlinker v1.9902
081a2b303178 src/cs/system/Main/mem_load.c: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
231 */
081a2b303178 src/cs/system/Main/mem_load.c: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
232 #if !(((CHIPSET == 12)||(CHIPSET==15)) && (LONG_JUMP == 0))
081a2b303178 src/cs/system/Main/mem_load.c: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
233 d_checksum1 += f_checksum((UWORD8 *)(C_TRAMPOLINE_LOAD_START), C_TRAMPOLINE_LENGTH);
081a2b303178 src/cs/system/Main/mem_load.c: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
234 #endif
081a2b303178 src/cs/system/Main/mem_load.c: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
235 #endif /* (TOOL_CHOICE == 0) */
081a2b303178 src/cs/system/Main/mem_load.c: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
236
081a2b303178 src/cs/system/Main/mem_load.c: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
237 #if ((CHIPSET == 12)||(CHIPSET==15))
081a2b303178 src/cs/system/Main/mem_load.c: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
238 d_checksum1 += f_checksum((UWORD8 *)(C_INTERRUPT_VECTOR_LOAD_START), C_INTERRUPT_VECTOR_LENGTH);
081a2b303178 src/cs/system/Main/mem_load.c: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
239 #endif
081a2b303178 src/cs/system/Main/mem_load.c: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
240 #endif /* (OP_WCP == 0) */
081a2b303178 src/cs/system/Main/mem_load.c: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
241
081a2b303178 src/cs/system/Main/mem_load.c: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
242
081a2b303178 src/cs/system/Main/mem_load.c: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
243 /*
081a2b303178 src/cs/system/Main/mem_load.c: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
244 * Download code from FLASH into Internal RAM (both code and trampoline functions)
081a2b303178 src/cs/system/Main/mem_load.c: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
245 */
081a2b303178 src/cs/system/Main/mem_load.c: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
246 INT_memcpy((void *)(C_APPLICATION_RUN_START),(void *)(C_APPLICATION_LOAD_START),C_APPLICATION_LENGTH);
081a2b303178 src/cs/system/Main/mem_load.c: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
247 #if ((OP_WCP == 0) || (OP_L1_STANDALONE == 1))
081a2b303178 src/cs/system/Main/mem_load.c: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
248 #if (TOOL_CHOICE == 0)
081a2b303178 src/cs/system/Main/mem_load.c: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
249 /* NEW COMPILER MANAGEMENT
081a2b303178 src/cs/system/Main/mem_load.c: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
250 * If use of VISUAL LINKER, needs to manage trampoline download.
081a2b303178 src/cs/system/Main/mem_load.c: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
251 * Case of:
081a2b303178 src/cs/system/Main/mem_load.c: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
252 * - TOOL_CHOICE == 0 => compiler v1.22e with vlinker v1.9902
081a2b303178 src/cs/system/Main/mem_load.c: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
253 */
081a2b303178 src/cs/system/Main/mem_load.c: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
254 #if !(((CHIPSET == 12)||(CHIPSET==15)) && (LONG_JUMP == 0))
081a2b303178 src/cs/system/Main/mem_load.c: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
255 INT_memcpy((void *)(C_TRAMPOLINE_RUN_START),(void *)(C_TRAMPOLINE_LOAD_START),C_TRAMPOLINE_LENGTH);
081a2b303178 src/cs/system/Main/mem_load.c: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
256 #endif
081a2b303178 src/cs/system/Main/mem_load.c: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
257 #endif /* (TOOL_CHOICE == 0) */
081a2b303178 src/cs/system/Main/mem_load.c: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
258
081a2b303178 src/cs/system/Main/mem_load.c: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
259 #if ((CHIPSET == 12)||(CHIPSET==15))
081a2b303178 src/cs/system/Main/mem_load.c: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
260 INT_memcpy((void *)(C_INTERRUPT_VECTOR_RUN_START),(void *)(C_INTERRUPT_VECTOR_LOAD_START),C_INTERRUPT_VECTOR_LENGTH);
081a2b303178 src/cs/system/Main/mem_load.c: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
261 #endif
081a2b303178 src/cs/system/Main/mem_load.c: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
262 #endif /* (OP_WCP == 0) */
081a2b303178 src/cs/system/Main/mem_load.c: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
263
081a2b303178 src/cs/system/Main/mem_load.c: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
264
081a2b303178 src/cs/system/Main/mem_load.c: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
265 /*
081a2b303178 src/cs/system/Main/mem_load.c: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
266 * Compute checksum on code in FLASH (code and trampoline functions)
081a2b303178 src/cs/system/Main/mem_load.c: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
267 */
081a2b303178 src/cs/system/Main/mem_load.c: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
268 d_checksum2 = f_checksum((UWORD8 *)(C_APPLICATION_RUN_START), C_APPLICATION_LENGTH);
081a2b303178 src/cs/system/Main/mem_load.c: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
269 #if ((OP_WCP == 0) || (OP_L1_STANDALONE == 1))
081a2b303178 src/cs/system/Main/mem_load.c: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
270 #if (TOOL_CHOICE == 0)
081a2b303178 src/cs/system/Main/mem_load.c: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
271 /* NEW COMPILER MANAGEMENT
081a2b303178 src/cs/system/Main/mem_load.c: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
272 * If use of VISUAL LINKER, needs to manage trampoline download.
081a2b303178 src/cs/system/Main/mem_load.c: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
273 * Case of:
081a2b303178 src/cs/system/Main/mem_load.c: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
274 * - TOOL_CHOICE == 0 => compiler v1.22e with vlinker v1.9902
081a2b303178 src/cs/system/Main/mem_load.c: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
275 */
081a2b303178 src/cs/system/Main/mem_load.c: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
276 #if !(((CHIPSET == 12)||(CHIPSET==15)) && (LONG_JUMP == 0))
081a2b303178 src/cs/system/Main/mem_load.c: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
277 d_checksum2 += f_checksum((UWORD8 *)(C_TRAMPOLINE_RUN_START), C_TRAMPOLINE_LENGTH);
081a2b303178 src/cs/system/Main/mem_load.c: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
278 #endif
081a2b303178 src/cs/system/Main/mem_load.c: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
279 #endif /* (TOOL_CHOICE == 0) */
081a2b303178 src/cs/system/Main/mem_load.c: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
280
081a2b303178 src/cs/system/Main/mem_load.c: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
281 #if ((CHIPSET == 12)||(CHIPSET==15))
081a2b303178 src/cs/system/Main/mem_load.c: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
282 d_checksum2 += f_checksum((UWORD8 *)(C_INTERRUPT_VECTOR_RUN_START), C_INTERRUPT_VECTOR_LENGTH);
081a2b303178 src/cs/system/Main/mem_load.c: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
283 #endif
081a2b303178 src/cs/system/Main/mem_load.c: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
284 #endif /* (OP_WCP == 0) */
081a2b303178 src/cs/system/Main/mem_load.c: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
285
081a2b303178 src/cs/system/Main/mem_load.c: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
286 #endif /* (OP_L1_STANDALONE == 0) && (BOARD == 35) && (USE_GZIP == 1) */
081a2b303178 src/cs/system/Main/mem_load.c: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
287
081a2b303178 src/cs/system/Main/mem_load.c: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
288 } /* f_load_int_mem() */
081a2b303178 src/cs/system/Main/mem_load.c: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
289 #endif /* ((LONG_JUMP == 3) || (((CHIPSET == 12)||(CHIPSET==15)) && (LONG_JUMP == 0))) */
081a2b303178 src/cs/system/Main/mem_load.c: import from LoCosto source
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
290 #endif /* ((((CHIPSET == 3) || (CHIPSET == 4) || ... (CHIPSET == 12) || (CHIPSET == 15)) */