LOGIN   :::   RECOVER PASS   :::   GET ACCOUNT    
Browse
  • Projects
  • Code (CVS)
  • Forums
  • News
  • Articles
  • Polls
  •  
    OpenCores
  • FAQ
  • CVS HowTo
  • Mission
  • Media
  • Tools
  • Advertise
  • Mirrors
  • Logos
  • Contact us
  • Job Opportunity
  •  
    Tools
  • Search
      
  • Download Cores (CVSGet)
  •  
    More
  • Wishbone
  • Perlilog
  • EDA tools
  • OpenTech CD
  •  
    Navigation: All forums > Cvs-checkins > Message List > Message Post

    Message

    Reply | Reply all
    Date Prev | Date Next | Thread Prev | Thread Next Date Index | Thread Index

    From: cvs at opencores.org<cvs@o...>
    Date: Thu Oct 25 18:17:54 CEST 2007
    Subject: [cvs-checkins] MODIFIED: mips789 ...
    Top
    Date: 00/07/10 25:18:17

    Added: mips789/Clib stringlib.c stringlib.h
    Log:
    no message


    Revision Changes Path
    1.1 mips789/Clib/stringlib.c

    http://www.opencores.org/cvsweb.shtml/mips789/Clib/stringlib.c?rev=1.1&content-type=text/x-cvsweb-markup

    Index: stringlib.c
    ===================================================================
    #include "stringlib.h"
    /*--------------------------------------------------------------------
    * TITLE: ANSI C Library
    * AUTHOR: Steve Rhoads (rhoadss@y...)
    * DATE CREATED: 12/17/05
    * FILENAME: libc.c
    * PROJECT: Plasma CPU core
    * COPYRIGHT: Software placed into the public domain by the author.
    * Software 'as is' without warranty. Author liable for nothing.
    * DESCRIPTION:
    * Subset of the ANSI C library
    *--------------------------------------------------------------------*/

    char*strcpy(char*dst,const char*src)
    {
    int c ;
    do
    {
    c=*dst++=*src++;
    }
    while(c);
    return dst ;
    }


    char*strncpy(char*dst,const char*src,int count)
    {
    int c=1 ;
    while(count-->0&&c)
    c=*dst++=*src++;
    *dst=0 ;
    return dst ;
    }


    char*strcat(char*dst,const char*src)
    {
    int c ;
    while(*dst)
    ++dst ;
    do
    {
    c=*dst++=*src++;
    }
    while(c);
    return dst ;
    }


    char*strncat(char*dst,const char*src,int count)
    {
    int c=1 ;
    while(*dst&&--count>0)
    ++dst ;
    while(--count>0&&c)
    c=*dst++=*src++;
    *dst=0 ;
    return dst ;
    }


    int strcmp(const char*string1,const char*string2)
    {
    int diff,c ;
    for(;;)
    {
    diff=*string1++-(c=*string2++);
    if(diff)
    return diff ;
    if(c==0)
    return 0 ;
    }
    }


    int strncmp(const char*string1,const char*string2,int count)
    {
    int diff,c ;
    while(count-->0)
    {
    diff=*string1++-(c=*string2++);
    if(diff)
    return diff ;
    if(c==0)
    return 0 ;
    }
    return 0 ;
    }
    char*strstr(const char*string,const char*find) { int i ; for(;;) { for(i=0;string[i]==find[i]&&find[i];++i); if(find[i]==0) return(char*)string ; if(*string++==0) return NULL ; } } int strlen(const char*string) { const char*base=string ; while(*string++); return string-base-1 ; } void*memcpy(void*dst,const void*src,unsigned long bytes) { uint8*Dst=(uint8*)dst ; uint8*Src=(uint8*)src ; while((int)bytes-->0) *Dst++=*Src++; return dst ; } void*memmove(void*dst,const void*src,unsigned long bytes) { uint8*Dst=(uint8*)dst ; uint8*Src=(uint8*)src ; if(Dst<Src) { while((int)bytes-->0) *Dst++=*Src++; } else { Dst+=bytes ; Src+=bytes ; while((int)bytes-->0) *--Dst=*--Src ; } return dst ; } int memcmp(const void*cs,const void*ct,unsigned long bytes) { uint8*Dst=(uint8*)cs ; uint8*Src=(uint8*)ct ; int diff ; while((int)bytes-->0) { diff=*Dst++-*Src++; if(diff) return diff ; } return 0 ; } void*memset(void*dst,int c,unsigned long bytes) { uint8*Dst=(uint8*)dst ; while((int)bytes-->0) *Dst++=(uint8)c ; return dst ; } int abs(int n) { return n>=0?n:-n ; } static uint32 Rand1=0x1f2bcda3,Rand2=0xdeafbeef,Rand3=0xc5134306 ; int rand(void) { int shift ; Rand1+=0x13423123+Rand2 ; Rand2+=0x2312fdea+Rand3 ; Rand3+=0xf2a12de1 ; shift=Rand3&31 ; Rand1=(Rand1<<(32-shift))|(Rand1>>shift); Rand3^=Rand1 ; shift=(Rand3>>8)&31 ; Rand2=(Rand2<<(32-shift))|(Rand2>>shift); return Rand1 ; } void srand(unsigned int seed) { Rand1=seed ; } long strtol(const char*s,const char**end,int base) { int i ; unsigned long ch,value=0,neg=0 ; if(s[0]=='-') { neg=1 ; ++s ; } if(s[0]=='0'&&s[1]=='x') { base=16 ; s+=2 ; } for(i=0;i<=8;++i) { ch=*s++; if('0'<=ch&&ch<='9') ch-='0' ; else if('A'<=ch&&ch<='Z') ch=ch-'A'+10 ; else if('a'<=ch&&ch<='z') ch=ch-'a'+10 ; else break ; value=value*base+ch ; } if(end) *end=s-1 ; if(neg) value=-(int)value ; return value ; } int atoi(const char*s) { return strtol(s,NULL,10); } char*itoa(int num,char*dst,int base) { int digit,negate=0,place ; char c,text[20]; if(base==10&&num<0) { num=-num ; negate=1 ; } text[16]=0 ; for(place=15;place>=0;--place) { digit=(unsigned int)num%(unsigned int)base ; if(num==0&&place<15&&base==10&&negate) { c='-' ; negate=0 ; } else if(digit<10) c=(char)('0'+digit); else c=(char)('a'+digit-10); text[place]=c ; num=(unsigned int)num/(unsigned int)base ; if(num==0&&negate==0) break ; } strcpy(dst,text+place); return dst ; } int sprintf(char*s,const char*format,int arg0) { int argv[2]; int argc=0,width,length ; char f,text[20],fill ; argv[0]=arg0 ; for(;;) { f=*format++; if(f==0) return argc ; else if(f=='%') { width=0 ; fill=' ' ; f=*format++; while('0'<=f&&f<='9') { width=width*10+f-'0' ; f=*format++; } if(f=='.') { fill='0' ; f=*format++; } if(f==0) return argc ; if(f=='d') { memset(s,fill,width); itoa(argv[argc++],text,10); length=(int)strlen(text); if(width<length) width=length ; strcpy(s+width-length,text); } else if(f=='x'||f=='f') { memset(s,'0',width); itoa(argv[argc++],text,16); length=(int)strlen(text); if(width<length) width=length ; strcpy(s+width-length,text); } else if(f=='c') { *s++=(char)argv[argc++]; *s=0 ; } else if(f=='s') { length=strlen((char*)argv[argc]); if(width>length) { memset(s,' ',width-length); s+=width-length ; } strcpy(s,(char*)argv[argc++]); } s+=strlen(s); } else if(f=='\\') { f=*format++; if(f==0) return argc ; else if(f=='n') *s++='\n' ; else if(f=='r') *s++='\r' ; else if(f=='t') *s++='\t' ; } else { *s++=f ; } *s=0 ; } } int sscanf(const char*s,const char*format,int arg0) { int argv[2]; int argc=0 ; char f,*ptr ; argv[0]=arg0 ; for(;;) { if(*s==0) return argc ; f=*format++; if(f==0) return argc ; else if(f=='%') { while(isspace(*s)) ++s ; f=*format++; if(f==0) return argc ; if(f=='d') *(int*)argv[argc++]=strtol(s,&s,10); else if(f=='x') *(int*)argv[argc++]=strtol(s,&s,16); else if(f=='c') *(char*)argv[argc++]=*s++; else if(f=='s') { ptr=(char*)argv[argc++]; while(!isspace(*s)) *ptr++=*s++; *ptr=0 ; } } else { if(f=='\\') { f=*format++; if(f==0) return argc ; else if(f=='n') f='\n' ; else if(f=='r') f='\r' ; else if(f=='t') f='\t' ; } while(*s&&*s!=f) ++s ; if(*s) ++s ; } } } 1.1 mips789/Clib/stringlib.h http://www.opencores.org/cvsweb.shtml/mips789/Clib/stringlib.h?rev=1.1&content-type=text/x-cvsweb-markup Index: stringlib.h =================================================================== typedef unsigned int uint32; typedef unsigned short uint16; typedef unsigned char uint8; #ifndef NULL #define NULL (void*)0 #endif #define assert(A) if((A)==0){OS_Assert();UartPrintfCritical("\r\nAssert %s:%d\r\n", __FILE__, __LINE__);} #define isprint(c) (' '<=(c)&&(c)<='~') #define isspace(c) ((c)==' '||(c)=='\t'||(c)=='\n'||(c)=='\r') #define isdigit(c) ('0'<=(c)&&(c)<='9') #define islower(c) ('a'<=(c)&&(c)<='z') #define isupper(c) ('A'<=(c)&&(c)<='Z') #define isalpha(c) (islower(c)||isupper(c)) #define isalnum(c) (isalpha(c)||isdigit(c)) #define min(a,b) ((a)<(b)?(a):(b)) #define strcpy strcpy2 //don't use intrinsic functions #define strcat strcat2 #define strcmp strcmp2 #define strlen strlen2 #define memcpy memcpy2 #define memcmp memcmp2 #define memset memset2 #define abs abs2 char *strcpy(char *dst, const char *src); char *strncpy(char *dst, const char *src, int count); char *strcat(char *dst, const char *src); char *strncat(char *dst, const char *src, int count); int strcmp(const char *string1, const char *string2); int strncmp(const char *string1, const char *string2, int count); char *strstr(const char *string, const char *find); int strlen(const char *string); void *memcpy(void *dst, const void *src, unsigned long bytes); void *memmove(void *dst, const void *src, unsigned long bytes); int memcmp(const void *cs, const void *ct, unsigned long bytes); void *memset(void *dst, int c, unsigned long bytes); int abs(int n); int rand(void); void srand(unsigned int seed); long strtol(const char *s, const char **end, int base); int atoi(const char *s); char *itoa(int num, char *dst, int base); int sscanf(const char*s,const char*format,int arg0); int sprintf(char*s,const char*format,int arg0);

     
    Copyright (c) 1999 OPENCORES.ORG. All rights reserved.