2016-01-20 20:52:51 +01:00
|
|
|
/*
|
|
|
|
* \brief Muen subject info
|
2015-07-02 16:25:51 +02:00
|
|
|
* \author Reto Buerki
|
|
|
|
* \date 2015-04-21
|
2016-01-20 20:52:51 +01:00
|
|
|
*/
|
|
|
|
|
|
|
|
/*
|
|
|
|
* Copyright (C) 2015 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.
|
|
|
|
*/
|
|
|
|
|
2015-07-02 16:25:51 +02:00
|
|
|
#ifndef _BASE__MUEN__MUSINFO_H_
|
|
|
|
#define _BASE__MUEN__MUSINFO_H_
|
2015-04-21 17:21:11 +02:00
|
|
|
|
|
|
|
#include <base/stdint.h>
|
|
|
|
|
|
|
|
#define MUEN_SUBJECT_INFO_MAGIC 0x01006f666e69756dULL
|
|
|
|
#define MAX_NAME_LENGTH 63
|
|
|
|
#define MAX_RESOURCE_COUNT 255
|
|
|
|
#define NO_RESOURCE 0
|
|
|
|
|
|
|
|
using namespace Genode;
|
|
|
|
|
|
|
|
struct name_type {
|
|
|
|
uint8_t length;
|
|
|
|
char data[MAX_NAME_LENGTH];
|
|
|
|
} __attribute__((packed));
|
|
|
|
|
|
|
|
#define MEM_WRITABLE_FLAG (1 << 0)
|
|
|
|
#define MEM_EXECUTABLE_FLAG (1 << 1)
|
|
|
|
|
|
|
|
struct memregion_type {
|
|
|
|
uint64_t address;
|
|
|
|
uint64_t size;
|
|
|
|
uint8_t flags;
|
|
|
|
char padding[7];
|
|
|
|
} __attribute__((packed, aligned (8)));
|
|
|
|
|
|
|
|
#define CHAN_EVENT_FLAG (1 << 0)
|
|
|
|
#define CHAN_VECTOR_FLAG (1 << 1)
|
|
|
|
|
|
|
|
struct channel_info_type {
|
|
|
|
uint8_t flags;
|
|
|
|
uint8_t event;
|
|
|
|
uint8_t vector;
|
|
|
|
char padding[5];
|
|
|
|
} __attribute__((packed, aligned (8)));
|
|
|
|
|
|
|
|
struct resource_type {
|
|
|
|
struct name_type name;
|
|
|
|
uint8_t memregion_idx;
|
|
|
|
uint8_t channel_info_idx;
|
|
|
|
char padding[6];
|
|
|
|
} __attribute__((packed, aligned (8)));
|
|
|
|
|
2016-02-16 17:08:14 +01:00
|
|
|
struct dev_info_type {
|
|
|
|
uint16_t sid;
|
|
|
|
uint16_t irte_start;
|
|
|
|
uint8_t irq_start;
|
|
|
|
uint8_t ir_count;
|
|
|
|
uint8_t flags;
|
|
|
|
char padding[1];
|
|
|
|
} __attribute__((packed, aligned (8)));
|
|
|
|
|
|
|
|
#define DEV_MSI_FLAG (1 << 0)
|
|
|
|
|
2015-04-21 17:21:11 +02:00
|
|
|
struct subject_info_type {
|
|
|
|
uint64_t magic;
|
|
|
|
uint8_t resource_count;
|
|
|
|
uint8_t memregion_count;
|
|
|
|
uint8_t channel_info_count;
|
2016-02-16 17:08:14 +01:00
|
|
|
uint8_t dev_info_count;
|
|
|
|
char padding[4];
|
2015-04-21 17:21:11 +02:00
|
|
|
uint64_t tsc_khz;
|
|
|
|
uint64_t tsc_schedule_start;
|
|
|
|
uint64_t tsc_schedule_end;
|
|
|
|
struct resource_type resources[MAX_RESOURCE_COUNT];
|
|
|
|
struct memregion_type memregions[MAX_RESOURCE_COUNT];
|
|
|
|
struct channel_info_type channels_info[MAX_RESOURCE_COUNT];
|
2016-02-16 17:08:14 +01:00
|
|
|
struct dev_info_type dev_info[MAX_RESOURCE_COUNT];
|
2015-04-21 17:21:11 +02:00
|
|
|
} __attribute__((packed, aligned (8)));
|
|
|
|
|
2015-07-02 16:25:51 +02:00
|
|
|
#endif /* _BASE__MUEN__MUSINFO_H_ */
|