blob: 42f6c53c59c651301e8547f820f6dddf3aeb9d20 [file] [log] [blame]
Robin Getz96f10502009-09-24 14:11:24 +00001/*
2 * Copyright 2004-2009 Analog Devices Inc.
3 *
4 * Licensed under the GPL-2 or later.
5 */
6
Bryan Wu1394f032007-05-06 14:50:22 -07007#ifndef _BLACKFIN_SECTIONS_H
8#define _BLACKFIN_SECTIONS_H
9
Mike Frysinger5203fa82009-06-08 18:40:28 -040010/* only used when MTD_UCLINUX */
11extern unsigned long memory_mtd_start, memory_mtd_end, mtd_size;
12
13extern unsigned long _ramstart, _ramend, _rambase;
14extern unsigned long memory_start, memory_end, physical_mem_end;
15
Mike Frysinger5cd82a62009-09-23 20:34:48 +000016/*
17 * The weak markings on the lengths might seem weird, but this is required
18 * in order to make gcc accept the fact that these may actually have a value
19 * of 0 (since they aren't actually addresses, but sizes of sections).
20 */
21extern char _stext_l1[], _etext_l1[], _text_l1_lma[], __weak _text_l1_len[];
22extern char _sdata_l1[], _edata_l1[], _sbss_l1[], _ebss_l1[],
23 _data_l1_lma[], __weak _data_l1_len[];
24extern char _sdata_b_l1[], _edata_b_l1[], _sbss_b_l1[], _ebss_b_l1[],
25 _data_b_l1_lma[], __weak _data_b_l1_len[];
26extern char _stext_l2[], _etext_l2[], _sdata_l2[], _edata_l2[],
27 _sbss_l2[], _ebss_l2[], _l2_lma[], __weak _l2_len[];
Mike Frysinger5203fa82009-06-08 18:40:28 -040028
Mike Frysingere56770f2009-09-22 16:44:17 -070029#include <asm/mem_map.h>
30
31/* Blackfin systems have discontinuous memory map and no virtualized memory */
32static inline int arch_is_kernel_text(unsigned long addr)
33{
34 return
35 (L1_CODE_LENGTH &&
36 addr >= (unsigned long)_stext_l1 &&
37 addr < (unsigned long)_etext_l1)
38 ||
39 (L2_LENGTH &&
40 addr >= (unsigned long)_stext_l2 &&
41 addr < (unsigned long)_etext_l2);
42}
43#define arch_is_kernel_text(addr) arch_is_kernel_text(addr)
44
45static inline int arch_is_kernel_data(unsigned long addr)
46{
47 return
48 (L1_DATA_A_LENGTH &&
49 addr >= (unsigned long)_sdata_l1 &&
50 addr < (unsigned long)_ebss_l1)
51 ||
52 (L1_DATA_B_LENGTH &&
53 addr >= (unsigned long)_sdata_b_l1 &&
54 addr < (unsigned long)_ebss_b_l1)
55 ||
56 (L2_LENGTH &&
57 addr >= (unsigned long)_sdata_l2 &&
58 addr < (unsigned long)_ebss_l2);
59}
60#define arch_is_kernel_data(addr) arch_is_kernel_data(addr)
61
62#include <asm-generic/sections.h>
63
Bryan Wu1394f032007-05-06 14:50:22 -070064#endif