diff options
author | Sonic Zhang <sonic.zhang@analog.com> | 2008-07-19 03:42:41 -0400 |
---|---|---|
committer | Bryan Wu <cooloney@kernel.org> | 2008-07-19 03:42:41 -0400 |
commit | 262c3825a9f3eb0f4f30ebb4b1ee57397bcb3ffc (patch) | |
tree | fb5402f0de002d3e7a6671820228a2b9808d831f /include/asm-blackfin | |
parent | bafcc1b97323261a42d47960db99947bcc1be133 (diff) |
Blackfin arch: Extend sram malloc to handle L2 SRAM.
Extend system call to alloc L2 SRAM in application.
Automatically move following sections to L2 SRAM:
1. kernel built-in l2 attribute section
2. kernel module l2 attribute section
3. elf-fdpic application l2 attribute section
Signed-off-by: Sonic Zhang <sonic.zhang@analog.com>
Signed-off-by: Bryan Wu <cooloney@kernel.org>
Diffstat (limited to 'include/asm-blackfin')
-rw-r--r-- | include/asm-blackfin/bfin-global.h | 8 | ||||
-rw-r--r-- | include/asm-blackfin/elf.h | 2 | ||||
-rw-r--r-- | include/asm-blackfin/module.h | 5 |
3 files changed, 12 insertions, 3 deletions
diff --git a/include/asm-blackfin/bfin-global.h b/include/asm-blackfin/bfin-global.h index 76033831eb3..320aa5e167e 100644 --- a/include/asm-blackfin/bfin-global.h +++ b/include/asm-blackfin/bfin-global.h | |||
@@ -92,16 +92,20 @@ extern void *l1_data_B_sram_alloc(size_t); | |||
92 | extern void *l1_inst_sram_alloc(size_t); | 92 | extern void *l1_inst_sram_alloc(size_t); |
93 | extern void *l1_data_sram_alloc(size_t); | 93 | extern void *l1_data_sram_alloc(size_t); |
94 | extern void *l1_data_sram_zalloc(size_t); | 94 | extern void *l1_data_sram_zalloc(size_t); |
95 | extern void *l2_sram_alloc(size_t); | ||
96 | extern void *l2_sram_zalloc(size_t); | ||
95 | extern int l1_data_A_sram_free(const void*); | 97 | extern int l1_data_A_sram_free(const void*); |
96 | extern int l1_data_B_sram_free(const void*); | 98 | extern int l1_data_B_sram_free(const void*); |
97 | extern int l1_inst_sram_free(const void*); | 99 | extern int l1_inst_sram_free(const void*); |
98 | extern int l1_data_sram_free(const void*); | 100 | extern int l1_data_sram_free(const void*); |
101 | extern int l2_sram_free(const void *); | ||
99 | extern int sram_free(const void*); | 102 | extern int sram_free(const void*); |
100 | 103 | ||
101 | #define L1_INST_SRAM 0x00000001 | 104 | #define L1_INST_SRAM 0x00000001 |
102 | #define L1_DATA_A_SRAM 0x00000002 | 105 | #define L1_DATA_A_SRAM 0x00000002 |
103 | #define L1_DATA_B_SRAM 0x00000004 | 106 | #define L1_DATA_B_SRAM 0x00000004 |
104 | #define L1_DATA_SRAM 0x00000006 | 107 | #define L1_DATA_SRAM 0x00000006 |
108 | #define L2_SRAM 0x00000008 | ||
105 | extern void *sram_alloc_with_lsl(size_t, unsigned long); | 109 | extern void *sram_alloc_with_lsl(size_t, unsigned long); |
106 | extern int sram_free_with_lsl(const void*); | 110 | extern int sram_free_with_lsl(const void*); |
107 | 111 | ||
@@ -114,7 +118,9 @@ extern struct file_operations dpmc_fops; | |||
114 | extern unsigned long _ramstart, _ramend, _rambase; | 118 | extern unsigned long _ramstart, _ramend, _rambase; |
115 | extern unsigned long memory_start, memory_end, physical_mem_end; | 119 | extern unsigned long memory_start, memory_end, physical_mem_end; |
116 | extern char _stext_l1[], _etext_l1[], _sdata_l1[], _edata_l1[], _sbss_l1[], | 120 | extern char _stext_l1[], _etext_l1[], _sdata_l1[], _edata_l1[], _sbss_l1[], |
117 | _ebss_l1[], _l1_lma_start[], _sdata_b_l1[], _ebss_b_l1[]; | 121 | _ebss_l1[], _l1_lma_start[], _sdata_b_l1[], _ebss_b_l1[], |
122 | _stext_l2[], _etext_l2[], _sdata_l2[], _edata_l2[], _sbss_l2[], | ||
123 | _ebss_l2[], _l2_lma_start[]; | ||
118 | 124 | ||
119 | #ifdef CONFIG_MTD_UCLINUX | 125 | #ifdef CONFIG_MTD_UCLINUX |
120 | extern unsigned long memory_mtd_start, memory_mtd_end, mtd_size; | 126 | extern unsigned long memory_mtd_start, memory_mtd_end, mtd_size; |
diff --git a/include/asm-blackfin/elf.h b/include/asm-blackfin/elf.h index 30303fc8292..67a03a8a353 100644 --- a/include/asm-blackfin/elf.h +++ b/include/asm-blackfin/elf.h | |||
@@ -15,6 +15,8 @@ | |||
15 | #define EF_BFIN_FDPIC 0x00000002 /* -mfdpic */ | 15 | #define EF_BFIN_FDPIC 0x00000002 /* -mfdpic */ |
16 | #define EF_BFIN_CODE_IN_L1 0x00000010 /* --code-in-l1 */ | 16 | #define EF_BFIN_CODE_IN_L1 0x00000010 /* --code-in-l1 */ |
17 | #define EF_BFIN_DATA_IN_L1 0x00000020 /* --data-in-l1 */ | 17 | #define EF_BFIN_DATA_IN_L1 0x00000020 /* --data-in-l1 */ |
18 | #define EF_BFIN_CODE_IN_L2 0x00000040 /* --code-in-l2 */ | ||
19 | #define EF_BFIN_DATA_IN_L2 0x00000080 /* --data-in-l2 */ | ||
18 | 20 | ||
19 | typedef unsigned long elf_greg_t; | 21 | typedef unsigned long elf_greg_t; |
20 | 22 | ||
diff --git a/include/asm-blackfin/module.h b/include/asm-blackfin/module.h index 3c7ce164428..e3128df139d 100644 --- a/include/asm-blackfin/module.h +++ b/include/asm-blackfin/module.h | |||
@@ -6,8 +6,6 @@ | |||
6 | #define Elf_Shdr Elf32_Shdr | 6 | #define Elf_Shdr Elf32_Shdr |
7 | #define Elf_Sym Elf32_Sym | 7 | #define Elf_Sym Elf32_Sym |
8 | #define Elf_Ehdr Elf32_Ehdr | 8 | #define Elf_Ehdr Elf32_Ehdr |
9 | #define FLG_CODE_IN_L1 0x10 | ||
10 | #define FLG_DATA_IN_L1 0x20 | ||
11 | 9 | ||
12 | struct mod_arch_specific { | 10 | struct mod_arch_specific { |
13 | Elf_Shdr *text_l1; | 11 | Elf_Shdr *text_l1; |
@@ -15,5 +13,8 @@ struct mod_arch_specific { | |||
15 | Elf_Shdr *bss_a_l1; | 13 | Elf_Shdr *bss_a_l1; |
16 | Elf_Shdr *data_b_l1; | 14 | Elf_Shdr *data_b_l1; |
17 | Elf_Shdr *bss_b_l1; | 15 | Elf_Shdr *bss_b_l1; |
16 | Elf_Shdr *text_l2; | ||
17 | Elf_Shdr *data_l2; | ||
18 | Elf_Shdr *bss_l2; | ||
18 | }; | 19 | }; |
19 | #endif /* _ASM_BFIN_MODULE_H */ | 20 | #endif /* _ASM_BFIN_MODULE_H */ |