mirror of
https://github.com/ivoszbg/uniLoader.git
synced 2024-11-21 11:30:06 +00:00
.: Initiate the project
Signed-off-by: Ivaylo Ivanov <ivo.ivanov.ivanov1@gmail.com>
This commit is contained in:
commit
6b4830e362
6
.gitignore
vendored
Normal file
6
.gitignore
vendored
Normal file
@ -0,0 +1,6 @@
|
||||
uniLoader
|
||||
*.o
|
||||
asm/*.o
|
||||
asm/linker.lds
|
||||
board/*/*.o
|
||||
soc/*/*.o
|
325
LICENSE
Normal file
325
LICENSE
Normal file
@ -0,0 +1,325 @@
|
||||
The GNU General Public License (GPL-2.0)
|
||||
Version 2, June 1991
|
||||
Copyright (C) 1989, 1991 Free Software Foundation, Inc.
|
||||
59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
|
||||
Everyone is permitted to copy and distribute verbatim copies
|
||||
of this license document, but changing it is not allowed.
|
||||
|
||||
Preamble
|
||||
|
||||
The licenses for most software are designed to take away your freedom to share
|
||||
and change it. By contrast, the GNU General Public License is intended to
|
||||
guarantee your freedom to share and change free software--to make sure the
|
||||
software is free for all its users. This General Public License applies to
|
||||
most of the Free Software Foundation's software and to any other program whose
|
||||
authors commit to using it. (Some other Free Software Foundation software is
|
||||
covered by the GNU Library General Public License instead.) You can apply
|
||||
it to your programs, too.
|
||||
|
||||
When we speak of free software, we are referring to freedom, not price.
|
||||
Our General Public Licenses are designed to make sure that you have the
|
||||
freedom to distribute copies of free software (and charge for this service
|
||||
if you wish), that you receive source code or can get it if you want it,
|
||||
that you can change the software or use pieces of it in new free programs;
|
||||
and that you know you can do these things.
|
||||
|
||||
To protect your rights, we need to make restrictions that forbid anyone to
|
||||
deny you these rights or to ask you to surrender the rights. These restrictions
|
||||
translate to certain responsibilities for you if you distribute copies of the
|
||||
software, or if you modify it.
|
||||
|
||||
For example, if you distribute copies of such a program, whether gratis or
|
||||
for a fee, you must give the recipients all the rights that you have.
|
||||
You must make sure that they, too, receive or can get the source code.
|
||||
And you must show them these terms so they know their rights.
|
||||
|
||||
We protect your rights with two steps: (1) copyright the software, and
|
||||
(2) offer you this license which gives you legal permission to copy,
|
||||
distribute and/or modify the software.
|
||||
|
||||
Also, for each author's protection and ours, we want to make certain that
|
||||
everyone understands that there is no warranty for this free software.
|
||||
If the software is modified by someone else and passed on, we want its
|
||||
recipients to know that what they have is not the original, so that any
|
||||
problems introduced by others will not reflect on the
|
||||
original authors' reputations.
|
||||
|
||||
Finally, any free program is threatened constantly by software patents.
|
||||
We wish to avoid the danger that redistributors of a free program will
|
||||
individually obtain patent licenses, in effect making the program proprietary.
|
||||
To prevent this, we have made it clear that any patent must be licensed for
|
||||
everyone's free use or not licensed at all.
|
||||
|
||||
The precise terms and conditions for copying, distribution
|
||||
and modification follow.
|
||||
|
||||
TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
|
||||
|
||||
0. This License applies to any program or other work which contains a notice
|
||||
placed by the copyright holder saying it may be distributed under the terms
|
||||
of this General Public License. The "Program", below, refers to any such
|
||||
program or work, and a "work based on the Program" means either the Program
|
||||
or any derivative work under copyright law: that is to say, a work containing
|
||||
the Program or a portion of it, either verbatim or with modifications and/or
|
||||
translated into another language. (Hereinafter, translation is included
|
||||
without limitation in the term "modification".)
|
||||
Each licensee is addressed as "you".
|
||||
|
||||
Activities other than copying, distribution and modification are not covered
|
||||
by this License; they are outside its scope. The act of running the Program
|
||||
is not restricted, and the output from the Program is covered only if its
|
||||
contents constitute a work based on the Program (independent of having been
|
||||
made by running the Program). Whether that is true depends on
|
||||
what the Program does.
|
||||
|
||||
1. You may copy and distribute verbatim copies of the Program's source code
|
||||
as you receive it, in any medium, provided that you conspicuously and
|
||||
appropriately publish on each copy an appropriate copyright notice and
|
||||
disclaimer of warranty; keep intact all the notices that refer to this
|
||||
License and to the absence of any warranty; and give any other recipients
|
||||
of the Program a copy of this License along with the Program.
|
||||
|
||||
You may charge a fee for the physical act of transferring a copy, and you
|
||||
may at your option offer warranty protection in exchange for a fee.
|
||||
|
||||
2. You may modify your copy or copies of the Program or any portion of it,
|
||||
thus forming a work based on the Program, and copy and distribute such
|
||||
modifications or work under the terms of Section 1 above, provided that you
|
||||
also meet all of these conditions:
|
||||
|
||||
a) You must cause the modified files to carry prominent notices stating
|
||||
that you changed the files and the date of any change.
|
||||
|
||||
b) You must cause any work that you distribute or publish, that in whole
|
||||
or in part contains or is derived from the Program or any part thereof,
|
||||
to be licensed as a whole at no charge to all third parties under
|
||||
the terms of this License.
|
||||
|
||||
c) If the modified program normally reads commands interactively when run,
|
||||
you must cause it, when started running for such interactive use in the
|
||||
most ordinary way, to print or display an announcement including an
|
||||
appropriate copyright notice and a notice that there is no warranty
|
||||
(or else, saying that you provide a warranty) and that users may
|
||||
redistribute the program under these conditions, and telling the user how
|
||||
to view a copy of this License. (Exception: if the Program itself is
|
||||
interactive but does not normally print such an announcement, your work
|
||||
based on the Program is not required to print an announcement.)
|
||||
|
||||
These requirements apply to the modified work as a whole. If identifiable
|
||||
sections of that work are not derived from the Program, and can be reasonably
|
||||
considered independent and separate works in themselves, then this License,
|
||||
and its terms, do not apply to those sections when you distribute them as
|
||||
separate works. But when you distribute the same sections as part of a whole
|
||||
which is a work based on the Program, the distribution of the whole must be
|
||||
on the terms of this License, whose permissions for other licensees extend
|
||||
to the entire whole, and thus to each and every part
|
||||
regardless of who wrote it.
|
||||
|
||||
Thus, it is not the intent of this section to claim rights or contest your
|
||||
rights to work written entirely by you; rather, the intent is to exercise
|
||||
the right to control the distribution of derivative or collective
|
||||
works based on the Program.
|
||||
|
||||
In addition, mere aggregation of another work not based on the Program with
|
||||
the Program (or with a work based on the Program) on a volume of a storage
|
||||
or distribution medium does not bring the other work under
|
||||
the scope of this License.
|
||||
|
||||
3. You may copy and distribute the Program (or a work based on it,
|
||||
under Section 2) in object code or executable form under the terms of
|
||||
Sections 1 and 2 above provided that you also do one of the following:
|
||||
|
||||
a) Accompany it with the complete corresponding machine-readable source
|
||||
code, which must be distributed under the terms of Sections 1 and 2 above
|
||||
on a medium customarily used for software interchange; or,
|
||||
|
||||
b) Accompany it with a written offer, valid for at least three years, to
|
||||
give any third party, for a charge no more than your cost of physically
|
||||
performing source distribution, a complete machine-readable copy of the
|
||||
corresponding source code, to be distributed under the terms of
|
||||
Sections 1 and 2 above on a medium customarily used
|
||||
for software interchange; or,
|
||||
|
||||
c) Accompany it with the information you received as to the offer to
|
||||
distribute corresponding source code. (This alternative is allowed only
|
||||
for noncommercial distribution and only if you received the program in
|
||||
object code or executable form with such an offer, in accord
|
||||
with Subsection b above.)
|
||||
|
||||
The source code for a work means the preferred form of the work for making
|
||||
modifications to it. For an executable work, complete source code means all
|
||||
the source code for all modules it contains, plus any associated interface
|
||||
definition files, plus the scripts used to control compilation and
|
||||
installation of the executable. However, as a special exception, the source
|
||||
code distributed need not include anything that is normally distributed
|
||||
(in either source or binary form) with the major components (compiler, kernel,
|
||||
and so on) of the operating system on which the executable runs, unless that
|
||||
component itself accompanies the executable.
|
||||
|
||||
If distribution of executable or object code is made by offering access to
|
||||
copy from a designated place, then offering equivalent access to copy the
|
||||
source code from the same place counts as distribution of the source code,
|
||||
even though third parties are not compelled to copy the source
|
||||
along with the object code.
|
||||
|
||||
4. You may not copy, modify, sublicense, or distribute the Program except as
|
||||
expressly provided under this License. Any attempt otherwise to copy, modify,
|
||||
sublicense or distribute the Program is void, and will automatically terminate
|
||||
your rights under this License. However, parties who have received copies,
|
||||
or rights, from you under this License will not have their licenses
|
||||
terminated so long as such parties remain in full compliance.
|
||||
|
||||
5. You are not required to accept this License, since you have not signed it.
|
||||
However, nothing else grants you permission to modify or distribute the
|
||||
Program or its derivative works. These actions are prohibited by law if you
|
||||
do not accept this License. Therefore, by modifying or distributing the Program
|
||||
(or any work based on the Program), you indicate your acceptance of this
|
||||
License to do so, and all its terms and conditions for copying, distributing
|
||||
or modifying the Program or works based on it.
|
||||
|
||||
6. Each time you redistribute the Program (or any work based on the Program),
|
||||
the recipient automatically receives a license from the original licensor
|
||||
to copy, distribute or modify the Program subject to these terms
|
||||
and conditions. You may not impose any further restrictions on the recipients'
|
||||
exercise of the rights granted herein. You are not responsible for enforcing
|
||||
compliance by third parties to this License.
|
||||
|
||||
7. If, as a consequence of a court judgment or allegation of patent
|
||||
infringement or for any other reason (not limited to patent issues),
|
||||
conditions are imposed on you (whether by court order, agreement or otherwise)
|
||||
that contradict the conditions of this License, they do not excuse you from
|
||||
the conditions of this License. If you cannot distribute so as to satisfy
|
||||
simultaneously your obligations under this License and any other pertinent
|
||||
obligations, then as a consequence you may not distribute the Program at all.
|
||||
For example, if a patent license would not permit royalty-free redistribution
|
||||
of the Program by all those who receive copies directly or indirectly
|
||||
through you, then the only way you could satisfy both it and this License
|
||||
would be to refrain entirely from distribution of the Program.
|
||||
|
||||
If any portion of this section is held invalid or unenforceable under any
|
||||
particular circumstance, the balance of the section is intended to apply
|
||||
and the section as a whole is intended to apply in other circumstances.
|
||||
|
||||
It is not the purpose of this section to induce you to infringe any patents
|
||||
or other property right claims or to contest validity of any such claims;
|
||||
this section has the sole purpose of protecting the integrity of the free
|
||||
software distribution system, which is implemented by public license practices.
|
||||
Many people have made generous contributions to the wide range of software
|
||||
distributed through that system in reliance on consistent application of
|
||||
that system; it is up to the author/donor to decide if he or she is willing
|
||||
to distribute software through any other system and a licensee
|
||||
cannot impose that choice.
|
||||
|
||||
This section is intended to make thoroughly clear what is believed to be a
|
||||
consequence of the rest of this License.
|
||||
|
||||
8. If the distribution and/or use of the Program is restricted in certain
|
||||
countries either by patents or by copyrighted interfaces, the original
|
||||
copyright holder who places the Program under this License may add an explicit
|
||||
geographical distribution limitation excluding those countries, so that
|
||||
distribution is permitted only in or among countries not thus excluded.
|
||||
In such case, this License incorporates the limitation as if written
|
||||
in the body of this License.
|
||||
|
||||
9. The Free Software Foundation may publish revised and/or new versions of the
|
||||
General Public License from time to time. Such new versions will be similar
|
||||
in spirit to the present version, but may differ in detail to address
|
||||
new problems or concerns.
|
||||
|
||||
Each version is given a distinguishing version number. If the Program
|
||||
specifies a version number of this License which applies to it and
|
||||
"any later version", you have the option of following the terms and conditions
|
||||
either of that version or of any later version published by the
|
||||
Free Software Foundation. If the Program does not specify a version number of
|
||||
this License, you may choose any version ever published
|
||||
by the Free Software Foundation.
|
||||
|
||||
10. If you wish to incorporate parts of the Program into other free programs
|
||||
whose distribution conditions are different, write to the author to ask for
|
||||
permission. For software which is copyrighted by the Free Software Foundation,
|
||||
write to the Free Software Foundation; we sometimes make exceptions for this.
|
||||
Our decision will be guided by the two goals of preserving the free status of
|
||||
all derivatives of our free software and of promoting the sharing
|
||||
and reuse of software generally.
|
||||
|
||||
NO WARRANTY
|
||||
|
||||
11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY FOR
|
||||
THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE
|
||||
STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE
|
||||
PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED,
|
||||
INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
|
||||
FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND
|
||||
PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE,
|
||||
YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
|
||||
|
||||
12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL
|
||||
ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR REDISTRIBUTE
|
||||
THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY
|
||||
GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE
|
||||
OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF DATA
|
||||
OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES
|
||||
OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF
|
||||
SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
|
||||
|
||||
END OF TERMS AND CONDITIONS
|
||||
|
||||
How to Apply These Terms to Your New Programs
|
||||
|
||||
If you develop a new program, and you want it to be of the greatest possible
|
||||
use to the public, the best way to achieve this is to make it free software
|
||||
which everyone can redistribute and change under these terms.
|
||||
|
||||
To do so, attach the following notices to the program. It is safest to attach
|
||||
them to the start of each source file to most effectively convey the exclusion
|
||||
of warranty; and each file should have at least the "copyright" line and a
|
||||
pointer to where the full notice is found.
|
||||
|
||||
One line to give the program's name and a brief idea of what it does.
|
||||
Copyright (C) {{ year }} {{ organization }}
|
||||
|
||||
This program is free software; you can redistribute it and/or modify it
|
||||
under the terms of the GNU General Public License as published by the
|
||||
Free Software Foundation; either version 2 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
This program is distributed in the hope that it will be useful, but
|
||||
WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
|
||||
or FITNESS FOR A PARTICULAR PURPOSE.
|
||||
See the GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License along
|
||||
with this program; if not, write to the Free Software Foundation, Inc.,
|
||||
59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
|
||||
Also add information on how to contact you by electronic and paper mail.
|
||||
|
||||
If the program is interactive, make it output a short notice like this when
|
||||
it starts in an interactive mode:
|
||||
|
||||
Gnomovision version 69, Copyright (C) year name of author Gnomovision
|
||||
comes with ABSOLUTELY NO WARRANTY; for details type `show w'. This is
|
||||
free software, and you are welcome to redistribute it under certain
|
||||
conditions; type `show c' for details.
|
||||
|
||||
The hypothetical commands `show w' and `show c' should show the appropriate
|
||||
parts of the General Public License. Of course, the commands you use may be
|
||||
called something other than `show w' and `show c'; they could even be
|
||||
mouse-clicks or menu items--whatever suits your program.
|
||||
|
||||
You should also get your employer (if you work as a programmer) or your school,
|
||||
if any, to sign a "copyright disclaimer" for the program, if necessary.
|
||||
Here is a sample; alter the names:
|
||||
|
||||
Yoyodyne, Inc., hereby disclaims all copyright interest in the program
|
||||
`Gnomovision' (which makes passes at compilers) written by James Hacker.
|
||||
|
||||
signature of Ty Coon, 1 April 1989
|
||||
Ty Coon, President of Vice
|
||||
|
||||
This General Public License does not permit incorporating your program into
|
||||
proprietary programs. If your program is a subroutine library, you may
|
||||
consider it more useful to permit linking proprietary applications with
|
||||
the library. If this is what you want to do, use the GNU Library General
|
||||
Public License instead of this License.
|
62
Makefile
Normal file
62
Makefile
Normal file
@ -0,0 +1,62 @@
|
||||
# SPDX-License-Identifier: GPL-2.0
|
||||
|
||||
#
|
||||
# Defaut values
|
||||
#
|
||||
KERNEL_PATH?=blob/Image
|
||||
DTB_PATH?=blob/dtb
|
||||
|
||||
#
|
||||
# Compiler defines
|
||||
#
|
||||
CCPREFIX?=aarch64-linux-gnu-
|
||||
CC=$(CCPREFIX)gcc
|
||||
CPP=$(CCPREFIX)cpp
|
||||
LD=$(CCPREFIX)ld
|
||||
OBJCPY=$(CCPREFIX)objcopy
|
||||
|
||||
#
|
||||
# Compiler flags
|
||||
#
|
||||
CFLAGS = -march=armv8-a -Wall -nodefaultlibs \
|
||||
-nostdlib -nostartfiles -fno-builtin \
|
||||
-nostdinc -Wstrict-prototypes -std=gnu11 \
|
||||
-Wno-main -I'./include'
|
||||
|
||||
#
|
||||
# Split BOARD definition into 2 parts - manufacturer and codename
|
||||
#
|
||||
split_board := $(subst -, ,$(BOARD:%=%))
|
||||
board_manu := $(word 1,$(split_board))
|
||||
board_codename := $(word 2,$(split_board))
|
||||
|
||||
OBJ = main.o \
|
||||
asm/Start.o
|
||||
|
||||
.PHONY: clean
|
||||
|
||||
#
|
||||
# Syntax:
|
||||
# name: dependencies-in-order
|
||||
# action-to-do
|
||||
#
|
||||
uniLoader: uniLoader.o
|
||||
$(OBJCPY) -O binary $< $@
|
||||
|
||||
uniLoader.o: copy-board-config $(OBJ) asm/linker.lds build-board build-soc
|
||||
$(LD) $(OBJ) board.o soc.o -o $@ --script=asm/linker.lds
|
||||
|
||||
asm/linker.lds: asm/linker.lds.S $(KERNEL_PATH)
|
||||
$(CPP) $< -DKERNEL_PATH=$(KERNEL_PATH) -DDTB_PATH=$(DTB_PATH) -P -o $@
|
||||
|
||||
build-board:
|
||||
cd board && make
|
||||
|
||||
build-soc:
|
||||
cd soc && make
|
||||
|
||||
copy-board-config:
|
||||
cp include/board/board-$(board_codename).h include/board-config.h
|
||||
|
||||
clean:
|
||||
-rm *.o asm/linker.lds asm/Start.o uniLoader board/*/*.o include/board-config.h soc/*/*.o
|
25
README.md
Normal file
25
README.md
Normal file
@ -0,0 +1,25 @@
|
||||
# uniLoader
|
||||
A simple secondary bootloader that is capable of loading Linux for Android and iOS based devices.
|
||||
|
||||
# Building
|
||||
1. Install aarch64-linux-gnu
|
||||
2. ```git clone https://github.com/ivoszbg/uniLoader```
|
||||
3. ```cd uniLoader```
|
||||
4. Place your kernel and device tree blobs under blob/
|
||||
5. ```make BOARD=(oem)-(board-codename) SOC=(device-soc)```<br />
|
||||
# Building example
|
||||
```sudo apt install aarch64-linux-gnu```<br />
|
||||
```git clone https://github.com/ivoszbg/uniLoader```<br />
|
||||
```cd uniLoader```<br />
|
||||
```cp /home/user/linux/arch/arm64/boot/Image blob/Image```<br />
|
||||
```cp /home/user/linux/arch/arm64/boot/dts/exynos/exynos8895-dreamlte.dtb blob/dtb```<br />
|
||||
```make BOARD=samsung-dreamlte SOC=exynos8895```
|
||||
# Usage
|
||||
For Apple devices: Load the generated **uniLoader** binary via PongoOs (TODO: allow loading **instead** of PongoOs)<br /><br />
|
||||
For Android devices: Replace the linux kernel in your *boot.img* with the **uniLoader** binary
|
||||
# Credits
|
||||
VDavid003 - for his sboot wrapper<br />
|
||||
Quack723 - Contributor<br />
|
||||
Ivoszbg - Making this huge mess of a bootloader
|
||||
# License
|
||||
This project is licensed under GPL2.
|
12
asm/Start.S
Normal file
12
asm/Start.S
Normal file
@ -0,0 +1,12 @@
|
||||
/* SPDX-License-Identifier: GPL-2.0 */
|
||||
/*
|
||||
* Copyright (c) 2022, Ivaylo Ivanov <ivo.ivanov.ivanov1@gmail.com>
|
||||
*/
|
||||
|
||||
adr x0, dtb
|
||||
adr x1, kernel
|
||||
b main
|
||||
|
||||
.global load_kernel
|
||||
load_kernel:
|
||||
br x4
|
28
asm/linker.lds.S
Normal file
28
asm/linker.lds.S
Normal file
@ -0,0 +1,28 @@
|
||||
/* SPDX-License-Identifier: GPL-2.0 */
|
||||
/*
|
||||
* Copyright (c) 2022, Ivaylo Ivanov <ivo.ivanov.ivanov1@gmail.com>
|
||||
*/
|
||||
|
||||
OUTPUT_FORMAT("elf64-littleaarch64")
|
||||
OUTPUT_ARCH(aarch64)
|
||||
TARGET(binary)
|
||||
|
||||
INPUT(KERNEL_PATH)
|
||||
INPUT(DTB_PATH)
|
||||
|
||||
SECTIONS
|
||||
{
|
||||
.boot : {
|
||||
asm/Start.o
|
||||
}
|
||||
|
||||
.dtb ALIGN(0x1000) : {
|
||||
dtb = .;
|
||||
DTB_PATH
|
||||
}
|
||||
|
||||
.kernel ALIGN(0x1000) : {
|
||||
kernel = .;
|
||||
KERNEL_PATH
|
||||
}
|
||||
}
|
1
blob/README
Normal file
1
blob/README
Normal file
@ -0,0 +1 @@
|
||||
Folder for binary blobs, like kernel image and device tree.
|
29
board/Makefile
Normal file
29
board/Makefile
Normal file
@ -0,0 +1,29 @@
|
||||
# SPDX-License-Identifier: GPL-2.0
|
||||
|
||||
#
|
||||
# Compiler defines
|
||||
#
|
||||
CCPREFIX?=aarch64-linux-gnu-
|
||||
CC=$(CCPREFIX)gcc
|
||||
CPP=$(CCPREFIX)cpp
|
||||
LD=$(CCPREFIX)ld
|
||||
OBJCPY=$(CCPREFIX)objcopy
|
||||
|
||||
#
|
||||
# Compiler flags
|
||||
#
|
||||
CFLAGS = -march=armv8-a -Wall -nodefaultlibs \
|
||||
-nostdlib -nostartfiles -fno-builtin \
|
||||
-nostdinc -Wstrict-prototypes -std=gnu11 -I'../include'
|
||||
|
||||
#
|
||||
# Split BOARD definition into 2 parts - manufacturer and codename
|
||||
#
|
||||
split_board := $(subst -, ,$(BOARD:%=%))
|
||||
board_manu := $(word 1,$(split_board))
|
||||
board_codename := $(word 2,$(split_board))
|
||||
|
||||
all: $(board_manu)/board-$(board_codename).o copy-board
|
||||
|
||||
copy-board:
|
||||
cp $(board_manu)/board-$(board_codename).o ../board.o
|
10
board/samsung/board-dreamlte.c
Normal file
10
board/samsung/board-dreamlte.c
Normal file
@ -0,0 +1,10 @@
|
||||
/* SPDX-License-Identifier: GPL-2.0 */
|
||||
/*
|
||||
* Copyright (c) 2022, Ivaylo Ivanov <ivo.ivanov.ivanov1@gmail.com>
|
||||
*/
|
||||
|
||||
#include <board/board-dreamlte.h>
|
||||
|
||||
void board_init(void) {
|
||||
|
||||
}
|
1
include/.gitignore
vendored
Normal file
1
include/.gitignore
vendored
Normal file
@ -0,0 +1 @@
|
||||
board-config.h
|
12
include/board/board-dreamlte.h
Normal file
12
include/board/board-dreamlte.h
Normal file
@ -0,0 +1,12 @@
|
||||
/* SPDX-License-Identifier: GPL-2.0 */
|
||||
/*
|
||||
* Copyright (c) 2022, Ivaylo Ivanov <ivo.ivanov.ivanov1@gmail.com>
|
||||
*/
|
||||
|
||||
#ifndef BOARD_DREAMLTE_H_ /* Include guard */
|
||||
#define BOARD_DREAMLTE_H_
|
||||
|
||||
#define PAYLOAD_ENTRY 0x90000000
|
||||
#define PAYLOAD_SIZE 0x2000000
|
||||
|
||||
#endif // BOARD_DREAMLTE_H_
|
23
include/main.h
Normal file
23
include/main.h
Normal file
@ -0,0 +1,23 @@
|
||||
/* SPDX-License-Identifier: GPL-2.0 */
|
||||
/*
|
||||
* Copyright (c) 2022, Ivaylo Ivanov <ivo.ivanov.ivanov1@gmail.com>
|
||||
*/
|
||||
|
||||
#ifndef MAIN_H_ /* Include guard */
|
||||
#define MAIN_H_
|
||||
|
||||
extern void load_kernel(void* dtb, void* x1, void* x2, void* x3, void* kernel);
|
||||
extern void soc_init(void);
|
||||
extern void board_init(void);
|
||||
|
||||
/* Define our own 128 bit memcpy */
|
||||
void memcpy(void *dest, void *src, int size)
|
||||
{
|
||||
unsigned __int128 *src2 = src;
|
||||
unsigned __int128 *dest2 = dest;
|
||||
|
||||
for (int i=0; i<size/16; i++)
|
||||
dest2[i] = src2[i];
|
||||
}
|
||||
|
||||
#endif // MAIN_H_
|
12
include/soc/exynos8895.h
Normal file
12
include/soc/exynos8895.h
Normal file
@ -0,0 +1,12 @@
|
||||
/* SPDX-License-Identifier: GPL-2.0 */
|
||||
/*
|
||||
* Copyright (c) 2022, Ivaylo Ivanov <ivo.ivanov.ivanov1@gmail.com>
|
||||
*/
|
||||
|
||||
#ifndef EXYNOS8895_H_ /* Include guard */
|
||||
#define EXYNOS8895_H_
|
||||
|
||||
#define DECON_F_BASE 0x12860000
|
||||
#define HW_SW_TRIG_CONTROL 0x70
|
||||
|
||||
#endif // EXYNOS8895_H_
|
18
main.c
Normal file
18
main.c
Normal file
@ -0,0 +1,18 @@
|
||||
/* SPDX-License-Identifier: GPL-2.0 */
|
||||
/*
|
||||
* Copyright (c) 2022, Ivaylo Ivanov <ivo.ivanov.ivanov1@gmail.com>
|
||||
*/
|
||||
|
||||
#include <main.h>
|
||||
/* Device specific board config, copied in runtime */
|
||||
#include <board-config.h>
|
||||
|
||||
void main(void* dt, void* kernel) {
|
||||
/* Initialize SoC and Board specific peripherals/quirks */
|
||||
soc_init();
|
||||
board_init();
|
||||
|
||||
/* Copy kernel to memory and boot */
|
||||
memcpy((void*)PAYLOAD_ENTRY, kernel, PAYLOAD_SIZE);
|
||||
load_kernel(dt, 0, 0, 0, (void*)PAYLOAD_ENTRY);
|
||||
}
|
38
soc/Makefile
Normal file
38
soc/Makefile
Normal file
@ -0,0 +1,38 @@
|
||||
# SPDX-License-Identifier: GPL-2.0
|
||||
|
||||
#
|
||||
# Compiler defines
|
||||
#
|
||||
CCPREFIX?=aarch64-linux-gnu-
|
||||
CC=$(CCPREFIX)gcc
|
||||
CPP=$(CCPREFIX)cpp
|
||||
LD=$(CCPREFIX)ld
|
||||
OBJCPY=$(CCPREFIX)objcopy
|
||||
|
||||
#
|
||||
# Compiler flags
|
||||
#
|
||||
CFLAGS = -march=armv8-a -Wall -nodefaultlibs \
|
||||
-nostdlib -nostartfiles -fno-builtin \
|
||||
-nostdinc -Wstrict-prototypes -std=gnu11 -I'../include'
|
||||
|
||||
#
|
||||
# Split BOARD definition into 2 parts - manufacturer and codename
|
||||
#
|
||||
split_board := $(subst -, ,$(BOARD:%=%))
|
||||
board_manu := $(word 1,$(split_board))
|
||||
board_codename := $(word 2,$(split_board))
|
||||
|
||||
#
|
||||
# Supported SoCs
|
||||
#
|
||||
|
||||
# Exynos
|
||||
ifeq ($(SOC),exynos8895)
|
||||
brand_name=exynos
|
||||
endif
|
||||
|
||||
all: $(brand_name)/$(SOC).o copy-soc
|
||||
|
||||
copy-soc:
|
||||
cp $(brand_name)/$(SOC).o ../soc.o
|
11
soc/exynos/exynos8895.c
Normal file
11
soc/exynos/exynos8895.c
Normal file
@ -0,0 +1,11 @@
|
||||
/* SPDX-License-Identifier: GPL-2.0 */
|
||||
/*
|
||||
* Copyright (c) 2022, Ivaylo Ivanov <ivo.ivanov.ivanov1@gmail.com>
|
||||
*/
|
||||
|
||||
#include <soc/exynos8895.h>
|
||||
|
||||
void soc_init(void) {
|
||||
/* Allow framebuffer to be written to */
|
||||
*(int*) (DECON_F_BASE + HW_SW_TRIG_CONTROL) = 0x1281;
|
||||
}
|
Loading…
Reference in New Issue
Block a user