view TaskManager/include/types.h @ 626:ab866bc8a624

64bit mode compatibility on Cell
author Shinji KONO <kono@ie.u-ryukyu.ac.jp>
date Mon, 16 Nov 2009 11:37:26 +0900
parents 60aa3f241b10
children 8843edf37c0e
line wrap: on
line source

#ifndef INCLUDED_TYPES
#define INCLUDED_TYPES

#include <stdint.h>

typedef uint16_t uint16;
typedef uint32_t uint32;
typedef uint64_t uint64;

//  In LP64, sizeof(unsigned long)==8
// typedef unsigned long memaddr;
// SPU's memaddr and PPU's memaddr must match.
typedef char* memaddr;


#define SPE_ALIGNMENT 16
#define SPE_ALIGNMENT_FULL 128
#define SPE_ALIGN __attribute__((aligned(SPE_ALIGNMENT)))
#define SPE_ALIGN_FULL __attribute__((aligned(SPE_ALIGNMENT_FULL))
#define ROUND_UP_ALIGN(value, alignment) \
    (((value) + ((alignment) - 1))&(~((alignment)-1)))
#define DEFAULT_ALIGNMENT SPE_ALIGNMENT
//#define DEFAULT_ALIGNMENT SPE_ALIGNMENT_FULL

#define DMA_MAX_SIZE 16384

#define round_up16(value)  ROUND_UP_ALIGN(value, 16)
#define round_up128(value) ROUND_UP_ALIGN(value, 128)

// ここも typedef しとくか?
enum {
// どの方向かで enum 分けるだろjk...
// PPE -> SPE 
    MY_SPE_NOP = 0,
    MY_SPE_COMMAND_EXIT,
    MY_SPE_COMMAND_GO,

// SPE -> PPE
    MY_SPE_STATUS_BUSY,
    MY_SPE_STATUS_READY,
    MY_SPE_COMMAND_MALLOC,
};

#define MAX_USE_SPE_NUM 6

typedef enum {
    CPU_PPE = 0, // default
    CPU_SPE = 1,
    SPE_ANY = CPU_SPE,
    SPE_0 = 2,
    SPE_1 = 3,
    SPE_2 = 4,
    SPE_3 = 5,
    SPE_4 = 6,
    SPE_5 = 7,
} CPU_TYPE;

#endif