mirror of
				https://github.com/openhwgroup/cvw
				synced 2025-02-11 06:05:49 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			68 lines
		
	
	
		
			2.7 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			68 lines
		
	
	
		
			2.7 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
///////////////////////////////////////////////////////////////////////
 | 
						|
// boot.h
 | 
						|
//
 | 
						|
// Written: Jaocb Pease jacob.pease@okstate.edu 7/22/2024
 | 
						|
//
 | 
						|
// Purpose: Header for boot.c, main bootloader entry point
 | 
						|
//
 | 
						|
// 
 | 
						|
//
 | 
						|
// A component of the Wally configurable RISC-V project.
 | 
						|
// 
 | 
						|
// Copyright (C) 2021-23 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.
 | 
						|
///////////////////////////////////////////////////////////////////////
 | 
						|
 | 
						|
#ifndef WALLYBOOT
 | 
						|
#define WALLYBOOT 10000
 | 
						|
 | 
						|
#include <stdint.h>
 | 
						|
typedef unsigned int    UINT;   /* int must be 16-bit or 32-bit */
 | 
						|
typedef unsigned char   BYTE;   /* char must be 8-bit */
 | 
						|
typedef uint16_t        WORD;   /* 16-bit unsigned integer */
 | 
						|
typedef uint32_t        DWORD;  /* 32-bit unsigned integer */
 | 
						|
typedef uint64_t        QWORD;  /* 64-bit unsigned integer */
 | 
						|
typedef WORD            WCHAR;
 | 
						|
 | 
						|
typedef QWORD LBA_t;
 | 
						|
 | 
						|
// Define memory locations of boot images =====================
 | 
						|
// These locations are copied from the generic configuration
 | 
						|
// of OpenSBI. These addresses can be found in:
 | 
						|
// buildroot/output/build/opensbi-0.9/platform/generic/config.mk
 | 
						|
#define FDT_ADDRESS 0x87000000          // FW_JUMP_FDT_ADDR
 | 
						|
#define OPENSBI_ADDRESS 0x80000000      // FW_TEXT_START
 | 
						|
#define KERNEL_ADDRESS 0x80200000       // FW_JUMP_ADDR
 | 
						|
 | 
						|
#define BANNER " █▀█        █▀█        █▀█        █▀▀                 █ █\r\n" \
 | 
						|
" █          █ █        █▄▀        █▄▄       ▄▄▄       █ █\r\n" \
 | 
						|
" █▄█        █▄█        █ █        █▄▄                 ▀▄▀\r\n" \
 | 
						|
" ____          ____  ____      ___      ___   ____    ___\r\n"      \
 | 
						|
" \\   \\        /   / /    \\    |   |    |   |  \\   \\  /  /\r\n" \
 | 
						|
"  \\   \\  __  /   / /      \\   |   |    |   |   \\   \\/  /\r\n" \
 | 
						|
"   \\   \\/  \\/   / /   /\\   \\  |   |    |   |    \\     /\r\n" \
 | 
						|
"    \\          / /   ____   \\ |   |___ |   |___  |   |\r\n" \
 | 
						|
"     \\___/\\___/ /___/    \\___\\|_______||_______| |___|\r\n\r\n"
 | 
						|
 | 
						|
// Export disk_read
 | 
						|
int disk_read(BYTE * buf, LBA_t sector, UINT count);
 | 
						|
 | 
						|
#define SYSTEMCLOCK 20000000
 | 
						|
 | 
						|
#endif // WALLYBOOT
 | 
						|
 |