Delete platform directory from sun4i target
[AROS.git] / arch / arm-sun4i / boot / support.c
blobb9cb918bc2698f9104ed8f93d00fe4b610b109a7
1 /*
2 Copyright © 2014, The AROS Development Team. All rights reserved.
3 $Id$
5 Desc:
6 Lang: english
7 */
9 #include "boot.h"
11 #include <sys/types.h>
13 void arm_flush_cache(uint32_t addr, uint32_t length) {
14 while (length) {
15 __asm__ __volatile__("mcr p15, 0, %0, c7, c14, 1"::"r"(addr));
16 addr += 32;
17 length -= 32;
19 __asm__ __volatile__("mcr p15, 0, %0, c7, c10, 4"::"r"(addr));
22 void arm_icache_invalidate(uint32_t addr, uint32_t length) {
23 while (length) {
24 __asm__ __volatile__("mcr p15, 0, %0, c7, c5, 1"::"r"(addr));
25 addr += 32;
26 length -= 32;
28 __asm__ __volatile__("mcr p15, 0, %0, c7, c10, 4"::"r"(addr));
31 void arm_dcache_invalidate(uint32_t addr, uint32_t length) {
32 while (length) {
33 __asm__ __volatile__("mcr p15, 0, %0, c7, c6, 1"::"r"(addr));
34 addr += 32;
35 length -= 32;
37 __asm__ __volatile__("mcr p15, 0, %0, c7, c10, 4"::"r"(addr));
40 int32_t strlen(const char *c) {
41 int32_t result = 0;
42 while (*c++)
43 result++;
45 return result;
48 const char *remove_path(const char *in) {
49 const char *p = &in[strlen(in)-1];
50 while (p > in && p[-1] != '/' && p[-1] != ':') p--;
51 return p;