• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1/*
2 * Copyright 2012 Actions Semi Inc.
3 * Author: Actions Semi, Inc.
4 *
5 * Copyright (c) 2017 Andreas Färber
6 *
7 * This program is free software; you can redistribute  it and/or modify it
8 * under  the terms of  the GNU General  Public License as published by the
9 * Free Software Foundation;  either version 2 of the  License, or (at your
10 * option) any later version.
11 */
12
13#include <linux/linkage.h>
14#include <linux/init.h>
15
16ENTRY(owl_v7_invalidate_l1)
17	mov	r0, #0
18	mcr	p15, 0, r0, c7, c5, 0	@ invalidate I cache
19	mcr	p15, 2, r0, c0, c0, 0
20	mrc	p15, 1, r0, c0, c0, 0
21
22	ldr	r1, =0x7fff
23	and	r2, r1, r0, lsr #13
24
25	ldr	r1, =0x3ff
26
27	and	r3, r1, r0, lsr #3	@ NumWays - 1
28	add	r2, r2, #1		@ NumSets
29
30	and	r0, r0, #0x7
31	add	r0, r0, #4	@ SetShift
32
33	clz	r1, r3		@ WayShift
34	add	r4, r3, #1	@ NumWays
351:	sub	r2, r2, #1	@ NumSets--
36	mov	r3, r4		@ Temp = NumWays
372:	subs	r3, r3, #1	@ Temp--
38	mov	r5, r3, lsl r1
39	mov	r6, r2, lsl r0
40	orr	r5, r5, r6	@ Reg = (Temp<<WayShift)|(NumSets<<SetShift)
41	mcr	p15, 0, r5, c7, c6, 2
42	bgt	2b
43	cmp	r2, #0
44	bgt	1b
45	dsb
46	isb
47	mov	pc, lr
48ENDPROC(owl_v7_invalidate_l1)
49
50ENTRY(owl_secondary_startup)
51	bl	owl_v7_invalidate_l1
52	b	secondary_startup
53