| 1 | /********************************************************** | 
|---|
| 2 | File : ldscript | 
|---|
| 3 | Author : Alain Greiner | 
|---|
| 4 | Date : March 2011 | 
|---|
| 5 | **********************************************************/ | 
|---|
| 6 |  | 
|---|
| 7 | /* definition of various hardware parameters. | 
|---|
| 8 | These variables are referenced in the drivers.c file, | 
|---|
| 9 | and must be defined, even if the corresponding | 
|---|
| 10 | peripherals are not present in the architecture */ | 
|---|
| 11 |  | 
|---|
| 12 | NB_CLUSTERS             = 4;            /* number of clusters */ | 
|---|
| 13 | NB_PROCS                = 4;            /* number of processors per cluster */ | 
|---|
| 14 | NB_TASKS                = 1;            /* number of tasks per processor */ | 
|---|
| 15 | NB_TIMERS               = 1;            /* max number of timers per processor */ | 
|---|
| 16 | NB_LOCKS                = 8;            /* number of spin_locks */ | 
|---|
| 17 |  | 
|---|
| 18 | /* definition of the base address for all segments | 
|---|
| 19 | The peripherals base addresses are referenced by the | 
|---|
| 20 | software drivers and must be defined, even if the | 
|---|
| 21 | peripherals are not present in the architecture */ | 
|---|
| 22 |  | 
|---|
| 23 | seg_code_base   = 0x00000000;       /* le code utilisateur */ | 
|---|
| 24 | seg_data_base   = 0x00100000;       /* les données utilisateur */ | 
|---|
| 25 |  | 
|---|
| 26 | seg_heap_base   = 0x00300000;       /* le tas utilisateur */ | 
|---|
| 27 | seg_stack_base  = 0x00800000;       /* la pile utilisateur */ | 
|---|
| 28 |  | 
|---|
| 29 | seg_kcode_base  = 0x80000000;       /* le code du système */ | 
|---|
| 30 | seg_kdata_base  = 0x80100000;       /* les donnees du système */ | 
|---|
| 31 | seg_kunc_base   = 0x80200000;       /* les données non cachées du système */ | 
|---|
| 32 |  | 
|---|
| 33 | seg_icu_base    = 0x00F00000;       /* controleur ICU */ | 
|---|
| 34 | seg_tty_base    = 0x00F10000;       /* controleur TTY */ | 
|---|
| 35 | seg_dma_base    = 0x00F20000;       /* controleur DMA */ | 
|---|
| 36 |  | 
|---|
| 37 | seg_reset_base  = 0xBFC00000;       /* le code de boot */ | 
|---|
| 38 | seg_fb_base     = 0xBFD00000;       /* controleur FRAME BUFFER */ | 
|---|
| 39 | seg_ioc_base    = 0xBFF30000;       /* controleur I/O */ | 
|---|
| 40 |  | 
|---|
| 41 | seg_timer_base  = 0xBFF40000;       /* controleur TIMER */ | 
|---|
| 42 | seg_gcd_base    = 0xBFF50000;       /* controleur GCD */ | 
|---|
| 43 |  | 
|---|
| 44 | /* Grouping sections into segments */ | 
|---|
| 45 |  | 
|---|
| 46 | SECTIONS | 
|---|
| 47 | { | 
|---|
| 48 | . = seg_kcode_base; | 
|---|
| 49 | seg_kcode : { | 
|---|
| 50 | *(.giet) | 
|---|
| 51 | *(.switch) | 
|---|
| 52 | *(.drivers) | 
|---|
| 53 | *(.isr) | 
|---|
| 54 | } | 
|---|
| 55 | . = seg_kdata_base; | 
|---|
| 56 | seg_kdata : { | 
|---|
| 57 | *(.kdata) | 
|---|
| 58 | } | 
|---|
| 59 | . = seg_kunc_base; | 
|---|
| 60 | seg_kunc : { | 
|---|
| 61 | *(.unckdata) | 
|---|
| 62 | } | 
|---|
| 63 | . = seg_kdata_base; | 
|---|
| 64 | seg_kdata : { | 
|---|
| 65 | *(.ksave) | 
|---|
| 66 | } | 
|---|
| 67 | . = seg_code_base; | 
|---|
| 68 | seg_code : { | 
|---|
| 69 | *(.text) | 
|---|
| 70 | } | 
|---|
| 71 | . = seg_reset_base; | 
|---|
| 72 | seg_reset : { | 
|---|
| 73 | *(.reset) | 
|---|
| 74 | } | 
|---|
| 75 | . = seg_data_base; | 
|---|
| 76 | seg_data : { | 
|---|
| 77 | *(.rodata) | 
|---|
| 78 | . = ALIGN(4); | 
|---|
| 79 | *(.rodata.*) | 
|---|
| 80 | . = ALIGN(4); | 
|---|
| 81 | *(.data) | 
|---|
| 82 | . = ALIGN(4); | 
|---|
| 83 | *(.sdata) | 
|---|
| 84 | . = ALIGN(4); | 
|---|
| 85 | *(.bss) | 
|---|
| 86 | *(COMMON) | 
|---|
| 87 | *(.sbss) | 
|---|
| 88 | } | 
|---|
| 89 | } | 
|---|
| 90 |  | 
|---|