diff options
author | 2013-05-01 14:09:50 +0000 | |
---|---|---|
committer | 2013-05-01 14:09:50 +0000 | |
commit | 7c3dc09bd9564f7bd23c7b67b627fdb48e375503 (patch) | |
tree | 084611fa23b5402f0ee1881cdc9eadbf67c910c0 | |
parent | Disable PandaBoard's L2 Cache early on bootup. We will re-enable it (diff) | |
download | wireguard-openbsd-7c3dc09bd9564f7bd23c7b67b627fdb48e375503.tar.xz wireguard-openbsd-7c3dc09bd9564f7bd23c7b67b627fdb48e375503.zip |
Add a secure monitor call function, so that a secondary cache controller
driver can talk to its controller properly.
From drahn at dalerahn.com.
ok bmercer@
-rw-r--r-- | sys/arch/arm/cortex/smc.h | 29 | ||||
-rw-r--r-- | sys/arch/beagle/beagle/beagle_machdep.c | 20 |
2 files changed, 48 insertions, 1 deletions
diff --git a/sys/arch/arm/cortex/smc.h b/sys/arch/arm/cortex/smc.h new file mode 100644 index 00000000000..a537852f73c --- /dev/null +++ b/sys/arch/arm/cortex/smc.h @@ -0,0 +1,29 @@ +/* $OpenBSD: smc.h,v 1.1 2013/05/01 14:09:50 patrick Exp $ */ +/* + * Copyright (c) 2013 Dale Rahn <drahn@dalerahn.com> + * + * Permission to use, copy, modify, and distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES + * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR + * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN + * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF + * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + */ + +/* SMC interface for hardware */ + +#ifdef _KERNEL + +/* XXX these defines go here ? */ +#define SMC_L2_DBG 0x100 +#define SMC_L2_CTL 0x102 + +void platform_smc_write(bus_space_tag_t, bus_space_handle_t, bus_size_t, + uint32_t, uint32_t); + +#endif /* _KERNEL */ diff --git a/sys/arch/beagle/beagle/beagle_machdep.c b/sys/arch/beagle/beagle/beagle_machdep.c index 5b759dd2541..700eb32b159 100644 --- a/sys/arch/beagle/beagle/beagle_machdep.c +++ b/sys/arch/beagle/beagle/beagle_machdep.c @@ -1,4 +1,4 @@ -/* $OpenBSD: beagle_machdep.c,v 1.16 2013/05/01 13:49:18 patrick Exp $ */ +/* $OpenBSD: beagle_machdep.c,v 1.17 2013/05/01 14:09:50 patrick Exp $ */ /* $NetBSD: lubbock_machdep.c,v 1.2 2003/07/15 00:25:06 lukem Exp $ */ /* @@ -144,6 +144,7 @@ #include <arm/armv7/armv7reg.h> #include <arm/armv7/armv7var.h> +#include <arm/cortex/smc.h> #include <machine/machine_reg.h> #include <beagle/dev/omapvar.h> @@ -1014,3 +1015,20 @@ board_startup(void) #endif } } + +void +platform_smc_write(bus_space_tag_t iot, bus_space_handle_t ioh, bus_size_t off, + uint32_t op, uint32_t val) +{ + extern void omap4_smc_call(uint32_t, uint32_t); + + switch (op) { + case 0x100: /* PL310 DEBUG */ + case 0x102: /* PL310 CTL */ + break; + default: + panic("platform_smc_write: invalid operation %d", op); + } + + omap4_smc_call(op, val); +} |