source: trunk/softs/tsar_boot/include/reset_utils.h @ 991

Last change on this file since 991 was 968, checked in by cfuguet, 10 years ago

bugfix:tsar_boot: cache aligned structures should use the
CACHE_LINE_SIZE constant

  • Define a macro for the cache aligned attribute.
File size: 1.4 KB
Line 
1/*
2 * \file    : reset_utils.h
3 * \date    : August 2012
4 * \author  : Cesar Fuguet
5 */
6
7#ifndef RESET_UTILS_H
8#define RESET_UTILS_H
9
10#include <elf-types.h>
11#include <inttypes.h>
12#include <defs.h>
13
14/********************************************************************
15 * Other types definition
16 ********************************************************************/
17
18#define __cache_aligned__ __attribute__((aligned(CACHE_LINE_SIZE)))
19
20/*
21 * cache line aligned disk block (sector) buffer
22 */
23struct aligned_blk
24{
25    char b[BLOCK_SIZE];
26} __cache_aligned__;
27
28/********************************************************************
29 * Utility functions definition
30 ********************************************************************/
31
32/**
33 * \brief processor waits for n cycles
34 */
35static inline void reset_sleep(int cycles)
36{
37    volatile int i;
38    for (i = 0; i < cycles; i++);
39}
40
41/**
42 * \brief returns processor count
43 */
44static inline unsigned int proctime()
45{
46    register unsigned int ret asm ("v0");
47    asm volatile ("mfc0   %0,        $9":"=r" (ret));
48    return ret;
49}
50
51int pread(size_t file_offset, void *buf, size_t nbyte, size_t offset);
52
53void* memcpy(void *_dst, const void *_src, size_t n);
54void* memset(void *_dst, int c, size_t len);
55
56void check_elf_header(Elf32_Ehdr *ehdr);
57void reset_print_elf_phdr(Elf32_Phdr * elf_phdr_ptr);
58void reset_display_block( char* buffer );
59
60#endif /* RESET_UTILS_H */
61
62// vim: tabstop=4 : softtabstop=4 : shiftwidth=4 : expandtab
63
Note: See TracBrowser for help on using the repository browser.