source: trunk/softs/giet_tsar/stdio.h @ 965

Last change on this file since 965 was 744, checked in by cfuguet, 10 years ago

giet_tsar: using CLUSTER_IO constant in stdio functions

  • Erasing also extra end-of-line spaces
File size: 4.7 KB
RevLine 
[622]1////////////////////////////////////////////////////////////////////////////////////////
2// File : stdio.h
[744]3// Written by Alain Greiner
[622]4// Date : 17/01/2014
5//
6// This file define varions functions that can be used by applications to access
7// peripherals, or other ressources such as processor registers, spin_locks
8// or synchronisation barriers.
9// It is dedicated for the TSAR multi-processors multi_clusters architecture.
10// There is NO separation between application code and system code.
11// This basic GIET does not use the virtual memory, and does nort support multi-tasking.
12//
13//The supported peripherals are:
14//- the SoClib multi_tty
15//- The SoCLib frame_buffer
16//- The SoCLib block_device
17//
18//The following parameters must be defined in the hard_config.h file.
19//- X_SIZE          : number of clusters in a row
20//- Y_SIZE          : number of clusters in a column
21//- X_WIDTH         : number of bits for X field in proc_id
22//- Y_WIDTH         : number of bits for Y field in proc_id
23//- NB_PROCS_MAX    : max number of processor per cluster
24//- NB_TTY_CHANNELS : max number of TTY channels
25//
26//The follobing base addresses must be defined in the ldscript
27//- seg_tty_base
28//- seg_fbf_base
29//- seg_ioc_base
30////////////////////////////////////////////////////////////////////////////////////////
[158]31
[622]32#ifndef _GIET_STDIO_H_
33#define _GIET_STDIO_H_
[158]34
[622]35#include "tty.h"
36#include "block_device.h"
37#include "hard_config.h"
38#include <stdarg.h>
[158]39
[622]40typedef unsigned int    size_t;
[158]41
[743]42// constants
[158]43
[743]44#define CLUSTER_IO (((X_IO) << (Y_WIDTH)) | (Y_IO))
[158]45
[622]46// functions defined in stdio.c
[158]47
[622]48void*           _memcpy( void* dst, const void* src, size_t size );
[158]49
[629]50void            _extended_memcpy( unsigned int dst_cluster,
51                                  unsigned int dst_address,
52                                  unsigned int src_cluster,
53                                  unsigned int src_address,
54                                  unsigned int length );
[743]55inline unsigned int _procid();
56inline unsigned int _proctime();
57inline unsigned int _procnumber();
[158]58
[743]59inline unsigned int _io_cluster();
60
[626]61unsigned int    _rand();
62
[622]63void            _it_mask();
64void            _it_enable();
[158]65
[743]66int             _sr_read();
67void            _sr_write(int sr);
68
[622]69void            _dcache_buf_invalidate( const void* buffer, size_t size );
[158]70
[622]71void            _exit();
[158]72
[622]73void            _itoa_dec( unsigned int val, char* buf );
74void            _itoa_hex( unsigned int val, char* buf );
75
76int             _tty_write( char* buffer, size_t length, size_t channel );
77int             _tty_read( char* buffer, size_t channel );
78void            _tty_puts( char* string );
79void            _tty_putd( unsigned int val );
80void            _tty_putx( unsigned int val );
81void            _tty_get_lock( size_t channel );
82void            _tty_release_lock( size_t channel );
83void            _tty_getc( char* buffer );
84void            _tty_getw( unsigned int* buffer );
85void            _tty_printf( char* format, ... );
[629]86void            _tty_isr();
[622]87
88void            _ioc_get_lock();
89void            _ioc_write( size_t lba, void* buffer, size_t count, size_t ext );
90void            _ioc_read (size_t lba, void* buffer, size_t count, size_t ext );
[743]91unsigned int    _ioc_get_blocksize();
[622]92void            _ioc_completed();
93void            _ioc_isr();
94
95void            _mmc_isr();
96
[744]97void            _fb_sync_write( unsigned int offset,
[629]98                                unsigned int buffer,
99                                unsigned int length,
100                                unsigned int ext );
[744]101void            _fb_sync_read(  unsigned int offset,
[629]102                                unsigned int buffer,
103                                unsigned int length,
104                                unsigned int ext );
[622]105
106void            _release_lock( size_t lock_index );
107void            _get_lock( size_t lock_index );
108
109void            _barrier_init(size_t index, size_t count);
110void            _barrier_wait(size_t index);
111
[744]112volatile unsigned char _byte_extended_read( unsigned int cluster,
[743]113                                            unsigned int address );
[744]114volatile unsigned int  _word_extended_read( unsigned int cluster,
[743]115                                            unsigned int address );
116
[744]117void            _word_extended_write( unsigned int   cluster,
118                                      unsigned int   address,
[629]119                                      unsigned int   word );
[744]120void            _byte_extended_write( unsigned int   cluster,
121                                      unsigned int   address,
[629]122                                      unsigned char  byte );
[158]123#endif
124
125// Local Variables:
126// tab-width: 4;
127// c-basic-offset: 4;
128// c-file-offsets:((innamespace . 0)(inline-open . 0));
129// indent-tabs-mode: nil;
130// End:
131//
132// vim: filetype=cpp:expandtab:shiftwidth=4:tabstop=4:softtabstop=4
133
Note: See TracBrowser for help on using the repository browser.