2017-07-18 11:15:10 +08:00
|
|
|
|
// һЩ<D2BB><D0A9><EFBFBD>õġ<C3B5><C4A1><EFBFBD><EFBFBD>õĽӿ<C4BD>
|
|
|
|
|
|
|
|
|
|
#ifndef __OPENLOONGSON_PUBLIC_H
|
|
|
|
|
#define __OPENLOONGSON_PUBLIC_H
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
#include <stdio.h>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// pmon<6F>ṩ<EFBFBD>Ĵ<EFBFBD>ӡ<EFBFBD><D3A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>main()<29><><EFBFBD><EFBFBD>
|
|
|
|
|
struct callvectors {
|
|
|
|
|
int (*open) (char *, int, int);
|
|
|
|
|
int (*close) (int);
|
|
|
|
|
int (*read) (int, void *, int);
|
|
|
|
|
int (*write) (int, void *, int);
|
|
|
|
|
long long (*lseek) (int, long long, int);
|
|
|
|
|
int (*printf) (const char *, ...);
|
|
|
|
|
void (*cacheflush) (void);
|
|
|
|
|
char *(*gets) (char *);
|
|
|
|
|
};
|
|
|
|
|
#define myprintf (*callvec->printf)
|
|
|
|
|
#define mygets (*callvec->gets)
|
|
|
|
|
extern struct callvectors *callvec;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
#define MIN(a, b) ((a) > (b) ? (b) : (a))
|
|
|
|
|
#define MAX(a, b) ((a) > (b) ? (a) : (b))
|
|
|
|
|
|
|
|
|
|
typedef enum
|
|
|
|
|
{
|
|
|
|
|
FALSE=0,
|
|
|
|
|
TRUE=1
|
|
|
|
|
}BOOL;
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
* <EFBFBD><EFBFBD>ָ<EFBFBD><EFBFBD><EFBFBD>Ĵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ָ<EFBFBD><EFBFBD>λ<EFBFBD><EFBFBD>1
|
|
|
|
|
* @reg <EFBFBD>Ĵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ַ
|
|
|
|
|
* @bit <EFBFBD><EFBFBD>Ҫ<EFBFBD><EFBFBD>1<EFBFBD><EFBFBD><EFBFBD><EFBFBD>һbit
|
|
|
|
|
*/
|
|
|
|
|
void reg_set_one_bit(volatile unsigned int *reg, unsigned int bit);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
* <EFBFBD><EFBFBD>ָ<EFBFBD><EFBFBD><EFBFBD>Ĵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ָ<EFBFBD><EFBFBD>λ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
* @reg <EFBFBD>Ĵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ַ
|
|
|
|
|
* @bit <EFBFBD><EFBFBD>Ҫ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һbit
|
|
|
|
|
*/
|
|
|
|
|
void reg_clr_one_bit(volatile unsigned int *reg, unsigned int bit);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
* <EFBFBD><EFBFBD>ȡָ<EFBFBD><EFBFBD><EFBFBD>Ĵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ָ<EFBFBD><EFBFBD>λ<EFBFBD><EFBFBD>ֵ
|
|
|
|
|
* @reg <EFBFBD>Ĵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ַ
|
|
|
|
|
* @bit <EFBFBD><EFBFBD>Ҫ<EFBFBD><EFBFBD>ȡֵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>һbit
|
|
|
|
|
* @ret ָ<EFBFBD><EFBFBD>λ<EFBFBD><EFBFBD>ֵ
|
|
|
|
|
*/
|
|
|
|
|
unsigned int reg_get_bit(volatile unsigned int *reg, unsigned int bit);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
* <EFBFBD><EFBFBD><EFBFBD>Ĵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>дһ<EFBFBD><EFBFBD>32bit<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
* @data <EFBFBD><EFBFBD>д<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
* @addr <EFBFBD>Ĵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ַ
|
|
|
|
|
*/
|
|
|
|
|
void reg_write_32(unsigned int data, volatile unsigned int *addr);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
* <EFBFBD>ӼĴ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><EFBFBD>32bit<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
* @addr <EFBFBD>Ĵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ַ
|
|
|
|
|
* @ret <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
*/
|
|
|
|
|
unsigned int reg_read_32(volatile unsigned int *addr);
|
|
|
|
|
|
|
|
|
|
|
2017-07-20 17:05:59 +08:00
|
|
|
|
/**
|
|
|
|
|
* ffs - find first bit set
|
|
|
|
|
* @x: the word to search
|
|
|
|
|
*/
|
|
|
|
|
int ls1c_ffs(int x);
|
|
|
|
|
|
2017-07-18 11:15:10 +08:00
|
|
|
|
|
|
|
|
|
#endif
|
|
|
|
|
|