1238189Simp/*- 2238189Simp * Copyright (c) 2012 Warner Losh. All rights reserved. 3238189Simp * 4238189Simp * Redistribution and use in source and binary forms, with or without 5238189Simp * modification, are permitted provided that the following conditions 6238189Simp * are met: 7238189Simp * 1. Redistributions of source code must retain the above copyright 8238189Simp * notice, this list of conditions and the following disclaimer. 9238189Simp * 2. Redistributions in binary form must reproduce the above copyright 10238189Simp * notice, this list of conditions and the following disclaimer in the 11238189Simp * documentation and/or other materials provided with the distribution. 12238189Simp * 13238189Simp * THIS SOFTWARE IS PROVIDED BY AUTHOR AND CONTRIBUTORS ``AS IS'' AND 14238189Simp * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 15238189Simp * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 16238189Simp * ARE DISCLAIMED. IN NO EVENT SHALL AUTHOR OR CONTRIBUTORS BE LIABLE 17238189Simp * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 18238189Simp * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 19238189Simp * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 20238189Simp * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 21238189Simp * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 22238189Simp * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 23238189Simp * SUCH DAMAGE. 24238189Simp */ 25238189Simp 26238189Simp/* $FreeBSD$ */ 27238189Simp 28238189Simp#ifndef _ARM_INCLUDE_BOARD_H_ 29238189Simp#define _ARM_INCLUDE_BOARD_H_ 30238189Simp 31238189Simp#include <sys/linker_set.h> 32238189Simp 33238189Simptypedef long (arm_board_init_fn)(void); 34238189Simp 35238189Simpstruct arm_board { 36238189Simp int board_id; /* Board ID from the boot loader */ 37238189Simp const char *board_name; /* Human readable name */ 38238189Simp arm_board_init_fn *board_init; /* Board initialize code */ 39238189Simp}; 40290648Smmel 41238189Simp#if defined(ARM_MANY_BOARD) 42238189Simp 43238189Simp#include "board_id.h" 44238189Simp 45238189Simp#define ARM_BOARD(id, name) \ 46238189Simp static struct arm_board this_board = { \ 47238189Simp .board_id = ARM_BOARD_ID_ ## id, \ 48238189Simp .board_name = name, \ 49238189Simp .board_init = board_init, \ 50238189Simp }; \ 51238189Simp DATA_SET(arm_boards, this_board); 52238189Simp#define BOARD_INIT static 53238189Simp 54238189Simp#else /* !ARM_MANY_BOARD */ 55238189Simp 56238189Simp#define ARM_BOARD(id, name) 57238189Simpextern arm_board_init_fn board_init; 58238189Simp#define BOARD_INIT 59238189Simp 60238189Simp#endif /* ARM_MANY_BOARD */ 61238189Simp 62238189Simp#endif /* _ARM_INCLUDE_BOARD_H_ */ 63