genode/base-mb/include/cpu/config.h
2011-12-22 16:19:25 +01:00

117 lines
2.6 KiB
C++
Executable File

/*
* \brief Configuration of underlying hardware
* \author Martin stein
* \date 07-05-2010
*/
/*
* Copyright (C) 07-2011 Genode Labs GmbH
*
* This file is part of the Genode OS framework, which is distributed
* under the terms of the GNU General Public License version 2.
*/
#ifndef _INCLUDE__CPU__CONFIG_H_
#define _INCLUDE__CPU__CONFIG_H_
#define ALWAYS_INLINE __attribute__((always_inline))
#define BITFIELD_ENUMS(name, bit_significancy_offset, bit_width) \
name ## _LSH = bit_significancy_offset, \
name ## _WID = bit_width, \
name ## _MSK = ~((~0) << bit_width) << bit_significancy_offset,
namespace Cpu {
typedef unsigned char uint8_t;
typedef unsigned short uint16_t;
typedef unsigned int uint32_t;
typedef uint8_t byte_t;
typedef uint32_t word_t;
typedef unsigned long addr_t;
typedef __SIZE_TYPE__ size_t;
enum {
BYTE_WIDTH_LOG2 = 3,
WORD_WIDTH_LOG2 = 5,
BYTE_WIDTH = 1 << BYTE_WIDTH_LOG2,
WORD_WIDTH = 1 << WORD_WIDTH_LOG2,
BYTE_SIZE = sizeof(byte_t),
WORD_SIZE = sizeof(word_t),
_16B_SIZE_LOG2 = 1*WORD_SIZE,
_256B_SIZE_LOG2 = 2*WORD_SIZE,
_4KB_SIZE_LOG2 = 3*WORD_SIZE,
_64KB_SIZE_LOG2 = 4*WORD_SIZE,
_1MB_SIZE_LOG2 = 5*WORD_SIZE,
_16MB_SIZE_LOG2 = 6*WORD_SIZE,
_256MB_SIZE_LOG2 = 7*WORD_SIZE,
_16B_SIZE = 1 << _16B_SIZE_LOG2,
_256B_SIZE = 1 << _256B_SIZE_LOG2,
_4KB_SIZE = 1 << _4KB_SIZE_LOG2,
_64KB_SIZE = 1 << _64KB_SIZE_LOG2,
_1MB_SIZE = 1 << _1MB_SIZE_LOG2,
_16MB_SIZE = 1 << _16MB_SIZE_LOG2,
_256MB_SIZE = 1 << _256MB_SIZE_LOG2,
};
enum {
RAM_BASE = 0x90000000,
RAM_SIZE = 0x06000000,
XPS_INTC_BASE = 0x81800000,
XPS_TIMER_0_BASE = 0x83c00000,
XPS_TIMER_0_IRQ = 0,
XPS_ETHERNETLITE_BASE = 0x81000000,
XPS_ETHERNETLITE_IRQ = 1,
XPS_UARTLITE_BASE = 0x84000000,
XPS_UARTLITE_IRQ = 3,
XPS_TIMER_1_BASE = 0x70000000,
XPS_TIMER_1_IRQ = 4,
};
typedef uint8_t Irq_id;
typedef uint8_t Exception_id;
enum {
FAST_SIMPLEX_LINK = 0,
UNALIGNED = 1,
ILLEGAL_OPCODE = 2,
INSTRUCTION_BUS = 3,
DATA_BUS = 4,
DIV_BY_ZERO_EXCEPTON = 5,
FPU = 6,
PRIVILEGED_INSTRUCTION = 7,
INTERRUPT = 10,
EXTERNAL_NON_MASKABLE_BREAK = 11,
EXTERNAL_MASKABLE_BREAK = 12,
DATA_STORAGE = 16,
INSTRUCTION_STORAGE = 17,
DATA_TLB_MISS = 18,
INSTRUCTION_TLB_MISS = 19,
MIN_EXCEPTION_ID = 0,
MAX_EXCEPTION_ID = 19,
INVALID_EXCEPTION_ID = 20
};
enum {
MIN_IRQ_ID = 0,
MAX_IRQ_ID = 31,
INVALID_IRQ_ID = 32,
};
}
#endif /* _INCLUDE__CPU__CONFIG_H_ */