Skip to content

Commit

Permalink
api: Add FreeBSD API support for MIPS platforms
Browse files Browse the repository at this point in the history
This patch adds U-Boot API support (used by FreeBSD loader) for MIPS platforms.

Signed-off-by: Stanislav Galabov <[email protected]>
  • Loading branch information
sgalabov authored and trini committed Feb 8, 2016
1 parent e4c1b4d commit 7c60423
Show file tree
Hide file tree
Showing 4 changed files with 60 additions and 0 deletions.
1 change: 1 addition & 0 deletions api/Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -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 changes: 32 additions & 0 deletions api/api_platform-mips.c
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
/*
* (C) Copyright 2007 Stanislav Galabov <[email protected]>
*
* 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;
}
3 changes: 3 additions & 0 deletions examples/api/Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
24 changes: 24 additions & 0 deletions examples/api/crt0.S
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down

0 comments on commit 7c60423

Please sign in to comment.