2015-01-31 17:31:03 -08:00
|
|
|
/*
|
|
|
|
|
* Copyright (c) 2015 Travis Geiselbrecht
|
|
|
|
|
*
|
2019-07-05 17:22:23 -07:00
|
|
|
* Use of this source code is governed by a MIT-style
|
|
|
|
|
* license that can be found in the LICENSE file or at
|
|
|
|
|
* https://opensource.org/licenses/MIT
|
2015-01-31 17:31:03 -08:00
|
|
|
*/
|
2019-06-17 18:28:51 -07:00
|
|
|
#include <lk/trace.h>
|
|
|
|
|
#include <lk/debug.h>
|
2015-10-12 18:26:48 -07:00
|
|
|
#include <stdint.h>
|
2021-10-21 23:08:38 -07:00
|
|
|
#include <arch.h>
|
|
|
|
|
#include <arch/ops.h>
|
2015-04-19 01:20:32 -07:00
|
|
|
#include <arch/microblaze.h>
|
2015-01-31 17:31:03 -08:00
|
|
|
|
2015-11-07 02:48:05 -08:00
|
|
|
#define LOCAL_TRACE 0
|
|
|
|
|
|
2019-06-19 20:54:28 -07:00
|
|
|
void arch_early_init(void) {
|
2015-11-07 02:48:05 -08:00
|
|
|
LTRACE;
|
2015-04-19 01:20:32 -07:00
|
|
|
|
|
|
|
|
/* enable i/d cache */
|
|
|
|
|
uint32_t val = mb_read_msr();
|
|
|
|
|
val |= (1 << (31 - 26)) | (1 << (31 - 24));
|
|
|
|
|
mb_write_msr(val);
|
2015-01-31 17:31:03 -08:00
|
|
|
}
|
|
|
|
|
|
2019-06-19 20:54:28 -07:00
|
|
|
void arch_init(void) {
|
2015-11-07 02:48:05 -08:00
|
|
|
LTRACE;
|
2015-01-31 17:31:03 -08:00
|
|
|
}
|
|
|
|
|
|
2019-06-19 20:54:28 -07:00
|
|
|
void arch_idle(void) {
|
2015-01-31 18:39:54 -08:00
|
|
|
asm volatile("sleep");
|
2015-01-31 17:31:03 -08:00
|
|
|
}
|
|
|
|
|
|
2019-06-19 20:54:28 -07:00
|
|
|
void arch_chain_load(void *entry, ulong arg0, ulong arg1, ulong arg2, ulong arg3) {
|
2015-01-31 18:39:54 -08:00
|
|
|
PANIC_UNIMPLEMENTED;
|
|
|
|
|
}
|
2015-09-20 13:19:40 -07:00
|
|
|
|
|
|
|
|
/* unimplemented cache operations */
|
|
|
|
|
void arch_disable_cache(uint flags) { PANIC_UNIMPLEMENTED; }
|
|
|
|
|
void arch_enable_cache(uint flags) { PANIC_UNIMPLEMENTED; }
|
|
|
|
|
|
|
|
|
|
void arch_clean_cache_range(addr_t start, size_t len) { PANIC_UNIMPLEMENTED; }
|
|
|
|
|
void arch_clean_invalidate_cache_range(addr_t start, size_t len) { PANIC_UNIMPLEMENTED; }
|
|
|
|
|
void arch_invalidate_cache_range(addr_t start, size_t len) { PANIC_UNIMPLEMENTED; }
|
|
|
|
|
void arch_sync_cache_range(addr_t start, size_t len) { PANIC_UNIMPLEMENTED; }
|