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

Last change on this file since 997 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
RevLine 
[586]1/*
2 * \file    : reset_utils.h
[425]3 * \date    : August 2012
4 * \author  : Cesar Fuguet
5 */
6
[758]7#ifndef RESET_UTILS_H
8#define RESET_UTILS_H
[425]9
10#include <elf-types.h>
[758]11#include <inttypes.h>
[701]12#include <defs.h>
[425]13
[701]14/********************************************************************
15 * Other types definition
16 ********************************************************************/
17
[968]18#define __cache_aligned__ __attribute__((aligned(CACHE_LINE_SIZE)))
19
[701]20/*
[758]21 * cache line aligned disk block (sector) buffer
[701]22 */
23struct aligned_blk
24{
25    char b[BLOCK_SIZE];
[968]26} __cache_aligned__;
[701]27
28/********************************************************************
29 * Utility functions definition
30 ********************************************************************/
31
[758]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}
[425]40
[758]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}
[425]50
[758]51int pread(size_t file_offset, void *buf, size_t nbyte, size_t offset);
[425]52
[758]53void* memcpy(void *_dst, const void *_src, size_t n);
54void* memset(void *_dst, int c, size_t len);
[425]55
[758]56void check_elf_header(Elf32_Ehdr *ehdr);
57void reset_print_elf_phdr(Elf32_Phdr * elf_phdr_ptr);
[962]58void reset_display_block( char* buffer );
[425]59
[758]60#endif /* RESET_UTILS_H */
[653]61
[425]62// vim: tabstop=4 : softtabstop=4 : shiftwidth=4 : expandtab
63
Note: See TracBrowser for help on using the repository browser.