1 /* 2 * linux/include/asm/setup.h 3 * 4 * Copyright (C) 1997-1999 Russell King 5 * 6 * This program is free software; you can redistribute it and/or modify 7 * it under the terms of the GNU General Public License version 2 as 8 * published by the Free Software Foundation. 9 * 10 * Structure passed to kernel to tell it about the 11 * hardware it's running on. See Documentation/arm/Setup 12 * for more info. 13 */ 14 #ifndef __ASMARM_SETUP_H 15 #define __ASMARM_SETUP_H 16 17 #include <uapi/asm/setup.h> 18 19 20 #define __tag __used __attribute__((__section__(".taglist.init"))) 21 #define __tagtable(tag, fn) \ 22 static const struct tagtable __tagtable_##fn __tag = { tag, fn } 23 24 /* 25 * Memory map description 26 */ 27 #define NR_BANKS CONFIG_ARM_NR_BANKS 28 29 struct membank { 30 phys_addr_t start; 31 phys_addr_t size; 32 unsigned int highmem; 33 }; 34 35 struct meminfo { 36 int nr_banks; 37 struct membank bank[NR_BANKS]; 38 }; 39 40 extern struct meminfo meminfo; 41 42 #define for_each_bank(iter,mi) \ 43 for (iter = 0; iter < (mi)->nr_banks; iter++) 44 45 #define bank_pfn_start(bank) __phys_to_pfn((bank)->start) 46 #define bank_pfn_end(bank) __phys_to_pfn((bank)->start + (bank)->size) 47 #define bank_pfn_size(bank) ((bank)->size >> PAGE_SHIFT) 48 #define bank_phys_start(bank) (bank)->start 49 #define bank_phys_end(bank) ((bank)->start + (bank)->size) 50 #define bank_phys_size(bank) (bank)->size 51 52 extern int arm_add_memory(u64 start, u64 size); 53 extern void early_print(const char *str, ...); 54 extern void dump_machine_table(void); 55 56 #endif 57