mirror of
https://github.com/openhwgroup/cvw.git
synced 2025-06-28 09:36:01 -04:00
186 lines
5.1 KiB
ArmAsm
186 lines
5.1 KiB
ArmAsm
///////////////////////////////////////////
|
|
// ebuArb.S
|
|
//
|
|
// Written: Rose Thompson rose@rosethompson.net
|
|
//
|
|
// Purpose: Force EBU arbitration.
|
|
//
|
|
// A component of the CORE-V-WALLY configurable RISC-V project.
|
|
// https://github.com/openhwgroup/cvw
|
|
//
|
|
// Copyright (C) 2021-25 Harvey Mudd College & Oklahoma State University
|
|
//
|
|
// SPDX-License-Identifier: Apache-2.0 WITH SHL-2.1
|
|
//
|
|
// Licensed under the Solderpad Hardware License v 2.1 (the “License”); you may not use this file
|
|
// except in compliance with the License, or, at your option, the Apache License version 2.0. You
|
|
// may obtain a copy of the License at
|
|
//
|
|
// https://solderpad.org/licenses/SHL-2.1/
|
|
//
|
|
// Unless required by applicable law or agreed to in writing, any work distributed under the
|
|
// License is distributed on an “AS IS” BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND,
|
|
// either express or implied. See the License for the specific language governing permissions
|
|
// and limitations under the License.
|
|
////////////////////////////////////////////////////////////////////////////////////////////////
|
|
|
|
// load code to initalize stack, handle interrupts, terminate
|
|
|
|
#include "WALLY-init-lib.h"
|
|
|
|
# cannot do this with a loop, must invalidate frequently to force as many possible lsu bus requests.
|
|
main:
|
|
la x31, data
|
|
addi x30, x31, 0x40
|
|
addi x29, x31, 0x80
|
|
addi x28, x31, 0xc0
|
|
addi x27, x31, 0x100
|
|
addi x26, x31, 0x140
|
|
addi x25, x31, 0x180
|
|
addi x24, x31, 0x1c0
|
|
|
|
ld x0, 0(x31)
|
|
cbo.inval (x31)
|
|
ld x1, 8(x31)
|
|
cbo.inval (x31)
|
|
ld x2, 0x10(x31)
|
|
cbo.inval (x31)
|
|
ld x3, 0x18(x31)
|
|
cbo.inval (x31)
|
|
ld x4, 0x20(x31)
|
|
cbo.inval (x31)
|
|
ld x5, 0x28(x31)
|
|
cbo.inval (x31)
|
|
ld x6, 0x30(x31)
|
|
cbo.inval (x31)
|
|
ld x7, 0x38(x31)
|
|
cbo.inval (x31)
|
|
ld x8, 0x40(x31)
|
|
cbo.inval (x30)
|
|
ld x9, 0x48(x31)
|
|
cbo.inval (x30)
|
|
ld x10, 0x50(x31)
|
|
cbo.inval (x30)
|
|
ld x11, 0x58(x31)
|
|
cbo.inval (x30)
|
|
ld x12, 0x60(x31)
|
|
cbo.inval (x30)
|
|
ld x13, 0x68(x31)
|
|
cbo.inval (x30)
|
|
ld x14, 0x70(x31)
|
|
cbo.inval (x30)
|
|
ld x15, 0x78(x31)
|
|
cbo.inval (x30)
|
|
ld x16, 0x80(x31)
|
|
cbo.inval (x29)
|
|
ld x17, 0x88(x31)
|
|
cbo.inval (x29)
|
|
ld x18, 0x90(x31)
|
|
cbo.inval (x29)
|
|
ld x19, 0x98(x31)
|
|
cbo.inval (x29)
|
|
ld x20, 0xa0(x31)
|
|
cbo.inval (x29)
|
|
ld x21, 0xa8(x31)
|
|
cbo.inval (x29)
|
|
ld x22, 0xb0(x31)
|
|
cbo.inval (x29)
|
|
ld x23, 0xb8(x31)
|
|
cbo.inval (x29)
|
|
ld x23, 0xc0(x31)
|
|
cbo.inval (x28)
|
|
ld x23, 0xc8(x31)
|
|
cbo.inval (x28)
|
|
ld x23, 0xd0(x31)
|
|
cbo.inval (x28)
|
|
ld x23, 0xd8(x31)
|
|
cbo.inval (x28)
|
|
ld x23, 0xe0(x31)
|
|
cbo.inval (x28)
|
|
ld x23, 0xe8(x31)
|
|
cbo.inval (x28)
|
|
ld x23, 0xf0(x31)
|
|
cbo.inval (x28)
|
|
ld x0, 0xf8(x31)
|
|
cbo.inval (x28)
|
|
ld x1, 0x100(x31)
|
|
cbo.inval (x27)
|
|
ld x1, 0x108(x31)
|
|
cbo.inval (x27)
|
|
ld x1, 0x110(x31)
|
|
cbo.inval (x27)
|
|
ld x1, 0x118(x31)
|
|
cbo.inval (x27)
|
|
ld x1, 0x120(x31)
|
|
cbo.inval (x27)
|
|
ld x1, 0x128(x31)
|
|
cbo.inval (x27)
|
|
ld x1, 0x130(x31)
|
|
cbo.inval (x27)
|
|
ld x1, 0x138(x31)
|
|
cbo.inval (x27)
|
|
ld x1, 0x140(x31)
|
|
cbo.inval (x26)
|
|
ld x1, 0x148(x31)
|
|
cbo.inval (x26)
|
|
ld x1, 0x150(x31)
|
|
cbo.inval (x26)
|
|
ld x1, 0x158(x31)
|
|
cbo.inval (x26)
|
|
ld x1, 0x160(x31)
|
|
cbo.inval (x26)
|
|
ld x1, 0x168(x31)
|
|
cbo.inval (x26)
|
|
ld x1, 0x170(x31)
|
|
cbo.inval (x26)
|
|
ld x1, 0x178(x31)
|
|
cbo.inval (x26)
|
|
ld x1, 0x180(x31)
|
|
cbo.inval (x25)
|
|
ld x1, 0x188(x31)
|
|
cbo.inval (x25)
|
|
ld x1, 0x190(x31)
|
|
cbo.inval (x25)
|
|
ld x1, 0x198(x31)
|
|
cbo.inval (x25)
|
|
ld x1, 0x1a0(x31)
|
|
cbo.inval (x25)
|
|
ld x1, 0x1a8(x31)
|
|
cbo.inval (x25)
|
|
ld x1, 0x1b0(x31)
|
|
cbo.inval (x25)
|
|
ld x1, 0x1b8(x31)
|
|
cbo.inval (x25)
|
|
ld x1, 0x1c0(x31)
|
|
cbo.inval (x24)
|
|
ld x1, 0x1c8(x31)
|
|
cbo.inval (x24)
|
|
ld x1, 0x1d0(x31)
|
|
cbo.inval (x24)
|
|
ld x1, 0x1d8(x31)
|
|
cbo.inval (x24)
|
|
ld x1, 0x1e0(x31)
|
|
cbo.inval (x24)
|
|
ld x1, 0x1e8(x31)
|
|
cbo.inval (x24)
|
|
ld x1, 0x1f0(x31)
|
|
cbo.inval (x24)
|
|
ld x1, 0x1f8(x31)
|
|
|
|
|
|
|
|
finished:
|
|
j done
|
|
|
|
.data
|
|
|
|
.align 3
|
|
data:
|
|
.8byte 0x0, 0x1, 0x2, 0x3, 0x4, 0x5, 0x6, 0x7
|
|
.8byte 0x8, 0x9, 0xa, 0xb, 0xc, 0xd, 0xe, 0xf
|
|
.8byte 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17
|
|
.8byte 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f
|
|
.8byte 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27
|
|
.8byte 0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, 0x2f
|
|
.8byte 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37
|
|
.8byte 0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f
|