mirror of
				https://github.com/smaeul/u-boot.git
				synced 2025-11-03 21:48:15 +00:00 
			
		
		
		
	api: Add FreeBSD API support for MIPS platforms
This patch adds U-Boot API support (used by FreeBSD loader) for MIPS platforms. Signed-off-by: Stanislav Galabov <sgalabov@gmail.com>
This commit is contained in:
		
							parent
							
								
									e4c1b4d8c1
								
							
						
					
					
						commit
						7c60423106
					
				@ -7,3 +7,4 @@
 | 
			
		||||
obj-y += api.o api_display.o api_net.o api_storage.o
 | 
			
		||||
obj-$(CONFIG_ARM) += api_platform-arm.o
 | 
			
		||||
obj-$(CONFIG_PPC) += api_platform-powerpc.o
 | 
			
		||||
obj-$(CONFIG_MIPS) += api_platform-mips.o
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										32
									
								
								api/api_platform-mips.c
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										32
									
								
								api/api_platform-mips.c
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,32 @@
 | 
			
		||||
/*
 | 
			
		||||
 * (C) Copyright 2007 Stanislav Galabov <sgalabov@gmail.com>
 | 
			
		||||
 *
 | 
			
		||||
 * SPDX-License-Identifier:	GPL-2.0+
 | 
			
		||||
 *
 | 
			
		||||
 * This file contains routines that fetch data from bd_info sources
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
#include <config.h>
 | 
			
		||||
#include <linux/types.h>
 | 
			
		||||
#include <api_public.h>
 | 
			
		||||
 | 
			
		||||
#include <asm/u-boot.h>
 | 
			
		||||
#include <asm/global_data.h>
 | 
			
		||||
 | 
			
		||||
#include "api_private.h"
 | 
			
		||||
 | 
			
		||||
DECLARE_GLOBAL_DATA_PTR;
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 * Important notice: handling of individual fields MUST be kept in sync with
 | 
			
		||||
 * include/asm-generic/u-boot.h, so any changes
 | 
			
		||||
 * need to reflect their current state and layout of structures involved!
 | 
			
		||||
 */
 | 
			
		||||
int platform_sys_info(struct sys_info *si)
 | 
			
		||||
{
 | 
			
		||||
 | 
			
		||||
	platform_set_mr(si, gd->bd->bi_memstart,
 | 
			
		||||
			gd->bd->bi_memsize, MR_ATTR_DRAM);
 | 
			
		||||
 | 
			
		||||
	return 1;
 | 
			
		||||
}
 | 
			
		||||
@ -10,6 +10,9 @@ endif
 | 
			
		||||
ifeq ($(ARCH),arm)
 | 
			
		||||
LOAD_ADDR = 0x1000000
 | 
			
		||||
endif
 | 
			
		||||
ifeq ($(ARCH),mips)
 | 
			
		||||
LOAD_ADDR = 0x80200000
 | 
			
		||||
endif
 | 
			
		||||
 | 
			
		||||
# Resulting ELF and binary exectuables will be named demo and demo.bin
 | 
			
		||||
extra-y = demo
 | 
			
		||||
 | 
			
		||||
@ -40,6 +40,30 @@ syscall:
 | 
			
		||||
	ldr	ip, =syscall_ptr
 | 
			
		||||
	ldr	pc, [ip]
 | 
			
		||||
 | 
			
		||||
#elif defined(CONFIG_MIPS)
 | 
			
		||||
	.text
 | 
			
		||||
	.globl __start
 | 
			
		||||
	.ent __start
 | 
			
		||||
__start:
 | 
			
		||||
	sw	$sp, search_hint
 | 
			
		||||
	b	main
 | 
			
		||||
	.end __start
 | 
			
		||||
 | 
			
		||||
	.globl syscall
 | 
			
		||||
	.ent syscall
 | 
			
		||||
syscall:
 | 
			
		||||
	sw	$ra, return_addr
 | 
			
		||||
	lw	$t9, syscall_ptr
 | 
			
		||||
	jalr	$t9
 | 
			
		||||
	nop
 | 
			
		||||
	lw	$ra, return_addr
 | 
			
		||||
	jr	$ra
 | 
			
		||||
	nop
 | 
			
		||||
	.end syscall
 | 
			
		||||
 | 
			
		||||
return_addr:
 | 
			
		||||
	.align 4
 | 
			
		||||
	.long 0
 | 
			
		||||
#else
 | 
			
		||||
#error No support for this arch!
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user