Working on binary installers for various hosts.
This commit is contained in:
parent
9d873d4165
commit
07d0b5b9f1
11 changed files with 293 additions and 139 deletions
5
.gitignore
vendored
5
.gitignore
vendored
|
@ -45,6 +45,11 @@ generated/
|
||||||
overlay
|
overlay
|
||||||
overlayhelper
|
overlayhelper
|
||||||
f256lib.h
|
f256lib.h
|
||||||
|
/distro/llvm-mos
|
||||||
|
|
||||||
|
# These aren't for public use or aren't ready.
|
||||||
|
build-foenix-ide.sh
|
||||||
|
/test.sh
|
||||||
|
|
||||||
# Dumb QtCreator junk
|
# Dumb QtCreator junk
|
||||||
build-*/
|
build-*/
|
||||||
|
|
|
@ -23,7 +23,8 @@
|
||||||
#
|
#
|
||||||
|
|
||||||
|
|
||||||
INSTALL=$(pwd)/llvm-mos
|
ROOT=$(pwd)
|
||||||
|
INSTALL=${ROOT}/llvm-mos
|
||||||
|
|
||||||
if [[ ! -d llvm-mos-source ]] || [[ "${1,,}" == "all" ]]; then
|
if [[ ! -d llvm-mos-source ]] || [[ "${1,,}" == "all" ]]; then
|
||||||
sudo apt-get install -y cmake ninja-build
|
sudo apt-get install -y cmake ninja-build
|
||||||
|
@ -47,7 +48,12 @@ if [[ ! -d llvm-mos-sdk-source ]]; then
|
||||||
git clone https://github.com/llvm-mos/llvm-mos-sdk.git llvm-mos-sdk-source
|
git clone https://github.com/llvm-mos/llvm-mos-sdk.git llvm-mos-sdk-source
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
LIST=llvm-mos-sdk-source/mos-platform/CMakeLists.txt
|
||||||
cp -Rf llvm-mos-sdk-patches/* llvm-mos-sdk-source/.
|
cp -Rf llvm-mos-sdk-patches/* llvm-mos-sdk-source/.
|
||||||
|
if [[ ! -e ${LIST}.original ]]; then
|
||||||
|
cp -f ${LIST} ${LIST}.original
|
||||||
|
echo "add_subdirectory(f256)" >> ${LIST}
|
||||||
|
fi
|
||||||
|
|
||||||
pushd llvm-mos-sdk-source
|
pushd llvm-mos-sdk-source
|
||||||
if [[ -d .builddir ]]; then
|
if [[ -d .builddir ]]; then
|
||||||
|
@ -60,6 +66,16 @@ pushd llvm-mos-sdk-source
|
||||||
-DCMAKE_INSTALL_PREFIX=${INSTALL} \
|
-DCMAKE_INSTALL_PREFIX=${INSTALL} \
|
||||||
..
|
..
|
||||||
ninja install
|
ninja install
|
||||||
|
|
||||||
|
mkdir -p distro
|
||||||
|
pushd distro
|
||||||
|
mkdir -p llvm-mos/mos-platform/f256
|
||||||
|
mkdir -p llvm-mos/bin
|
||||||
|
cp -Rf ${INSTALL}/mos-platform/f256/* llvm-mos/mos-platform/f256/.
|
||||||
|
cp -f ${INSTALL}/bin/mos-f256.cfg llvm-mos/bin/.
|
||||||
|
tar cJf llvm-mos-f256.tar.xz llvm-mos
|
||||||
|
7z a llvm-mos-f256.7z llvm-mos
|
||||||
|
popd
|
||||||
popd
|
popd
|
||||||
popd
|
popd
|
||||||
|
|
||||||
|
|
57
distro/f256-install-linux.sh
Executable file
57
distro/f256-install-linux.sh
Executable file
|
@ -0,0 +1,57 @@
|
||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
#
|
||||||
|
# Copyright (c) 2024 Scott Duensing, scott@kangaroopunch.com
|
||||||
|
#
|
||||||
|
# Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
|
# of this software and associated documentation files (the "Software"), to deal
|
||||||
|
# in the Software without restriction, including without limitation the rights
|
||||||
|
# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||||
|
# copies of the Software, and to permit persons to whom the Software is
|
||||||
|
# furnished to do so, subject to the following conditions:
|
||||||
|
#
|
||||||
|
# The above copyright notice and this permission notice shall be included in
|
||||||
|
# all copies or substantial portions of the Software.
|
||||||
|
#
|
||||||
|
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||||
|
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||||
|
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||||
|
# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||||
|
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||||
|
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||||
|
# SOFTWARE.
|
||||||
|
#
|
||||||
|
|
||||||
|
|
||||||
|
REMOTE1=https://github.com/llvm-mos/llvm-mos-sdk/releases/latest/download/llvm-mos-linux.tar.xz
|
||||||
|
LOCAL1=llvm-mos-linux.tar.xz
|
||||||
|
|
||||||
|
REMOTE2=https://kangaroopunch.com/files/serve/shared/llvm-mos-f256.tar.xz
|
||||||
|
LOCAL2=llvm-mos-f256.tar.xz
|
||||||
|
|
||||||
|
|
||||||
|
if [[ -d $(basename -s .tar.xz ${LOCAL1}) ]]; then
|
||||||
|
echo "You already have an llvm-mos directory. Exiting."
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
CURL=$(which curl)
|
||||||
|
if [[ $? == 0 ]]; then
|
||||||
|
${CURL} -L ${REMOTE1} > ${LOCAL1}
|
||||||
|
${CURL} -L ${REMOTE2} > ${LOCAL2}
|
||||||
|
else
|
||||||
|
WGET=$(which wget)
|
||||||
|
if [[ $? == 0 ]]; then
|
||||||
|
wget ${REMOTE1}
|
||||||
|
wget ${REMOTE2}
|
||||||
|
else
|
||||||
|
echo "Unable to locate curl or wget. Exiting."
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
tar xf ${LOCAL1}
|
||||||
|
rm ${LOCAL1}
|
||||||
|
|
||||||
|
tar xf ${LOCAL2}
|
||||||
|
rm ${LOCAL2}
|
94
distro/f256-install-windows.bat
Normal file
94
distro/f256-install-windows.bat
Normal file
|
@ -0,0 +1,94 @@
|
||||||
|
@echo off
|
||||||
|
goto top
|
||||||
|
|
||||||
|
|
||||||
|
#
|
||||||
|
# Copyright (c) 2024 Scott Duensing, scott@kangaroopunch.com
|
||||||
|
#
|
||||||
|
# Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
|
# of this software and associated documentation files (the "Software"), to deal
|
||||||
|
# in the Software without restriction, including without limitation the rights
|
||||||
|
# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||||
|
# copies of the Software, and to permit persons to whom the Software is
|
||||||
|
# furnished to do so, subject to the following conditions:
|
||||||
|
#
|
||||||
|
# The above copyright notice and this permission notice shall be included in
|
||||||
|
# all copies or substantial portions of the Software.
|
||||||
|
#
|
||||||
|
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||||
|
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||||
|
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||||
|
# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||||
|
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||||
|
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||||
|
# SOFTWARE.
|
||||||
|
#
|
||||||
|
|
||||||
|
|
||||||
|
:top
|
||||||
|
|
||||||
|
|
||||||
|
set REMOTE1=https://github.com/llvm-mos/llvm-mos-sdk/releases/latest/download/llvm-mos-windows.7z
|
||||||
|
set LOCAL1=llvm-mos-windows.7z
|
||||||
|
|
||||||
|
set REMOTE2=https://kangaroopunch.com/files/serve/shared/llvm-mos-f256.7z
|
||||||
|
set LOCAL2=llvm-mos-f256.7z
|
||||||
|
|
||||||
|
set REMOTE3=https://aka.ms/vs/16/release/vc_redist.x64.exe
|
||||||
|
set LOCAL3=vc_redist.x64.exe
|
||||||
|
|
||||||
|
|
||||||
|
if exist llvm-mos\ (
|
||||||
|
echo You already have an llvm-mos directory. Exiting.
|
||||||
|
exit /B
|
||||||
|
)
|
||||||
|
|
||||||
|
where /q curl.exe
|
||||||
|
if errorlevel 1 (
|
||||||
|
where /q bitsadmin.exe
|
||||||
|
if errorlevel 1 (
|
||||||
|
echo Unable to locate curl or bitsadmin. Exiting.
|
||||||
|
exit /B
|
||||||
|
) else (
|
||||||
|
bitsadmin.exe /transfer GoGoWindows /download /priority normal %REMOTE1% "%~dp0%LOCAL1%"
|
||||||
|
bitsadmin.exe /transfer GoGoWindows /download /priority normal %REMOTE2% "%~dp0%LOCAL2%"
|
||||||
|
bitsadmin.exe /transfer GoGoWindows /download /priority normal %REMOTE3% "%~dp0%LOCAL3%"
|
||||||
|
)
|
||||||
|
) else (
|
||||||
|
curl.exe -L %REMOTE1% > %LOCAL1%
|
||||||
|
curl.exe -L %REMOTE2% > %LOCAL2%
|
||||||
|
curl.exe -L %REMOTE2% > %LOCAL3%
|
||||||
|
)
|
||||||
|
|
||||||
|
%LOCAL3% /install /passive
|
||||||
|
|
||||||
|
if exist "%ProgramFiles%\7-Zip\7z.exe" (
|
||||||
|
"%ProgramFiles%\7-Zip\7z.exe" x %LOCAL1%
|
||||||
|
"%ProgramFiles%\7-Zip\7z.exe" x %LOCAL2%
|
||||||
|
) else (
|
||||||
|
if exist "%ProgramFiles%\WinRAR\UnRAR.exe" (
|
||||||
|
"%ProgramFiles%\WinRAR\UnRAR.exe" x %LOCAL1%
|
||||||
|
"%ProgramFiles%\WinRAR\UnRAR.exe" x %LOCAL2%
|
||||||
|
) else (
|
||||||
|
echo Unable to find 7-Zip or WinRAR. Exiting.
|
||||||
|
del %LOCAL1%
|
||||||
|
del %LOCAL2%
|
||||||
|
del %LOCAL3%
|
||||||
|
exit /B
|
||||||
|
)
|
||||||
|
)
|
||||||
|
|
||||||
|
del %LOCAL1%
|
||||||
|
del %LOCAL2%
|
||||||
|
del %LOCAL3%
|
||||||
|
|
||||||
|
echo @"%%~dp0mos-clang++.exe" --config mos-f256.cfg %%* > llvm-mos/bin/mos-f256-clang++.bat
|
||||||
|
echo @"%%~dp0mos-clang-cpp.exe" --config mos-f256.cfg %%* > llvm-mos/bin/mos-f256-clang-cpp.bat
|
||||||
|
echo @"%%~dp0mos-clang.exe" --config mos-f256.cfg %%* > llvm-mos/bin/mos-f256-clang.bat
|
||||||
|
|
||||||
|
echo.
|
||||||
|
echo Installation complete!
|
||||||
|
echo.
|
||||||
|
echo It is recommended that you add the following to your PATH:
|
||||||
|
echo %~dp0llvm-mos\bin
|
||||||
|
echo.
|
|
@ -1,81 +0,0 @@
|
||||||
include(platform)
|
|
||||||
|
|
||||||
if (CMAKE_CROSSCOMPILING)
|
|
||||||
add_compile_options(-flto)
|
|
||||||
else()
|
|
||||||
# Make nested build directory cross-compiling to MOS, but using this
|
|
||||||
# CMakeLists.txt.
|
|
||||||
ExternalProject_Add(mos-platform
|
|
||||||
SOURCE_DIR ${CMAKE_SOURCE_DIR}
|
|
||||||
BINARY_DIR build
|
|
||||||
INSTALL_DIR build/install
|
|
||||||
STAMP_DIR build/stamp
|
|
||||||
TMP_DIR build/tmp
|
|
||||||
DOWNLOAD_DIR build
|
|
||||||
CMAKE_ARGS
|
|
||||||
-DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE}
|
|
||||||
-DCMAKE_INSTALL_PREFIX=<INSTALL_DIR>
|
|
||||||
-DCMAKE_TOOLCHAIN_FILE=${CMAKE_SOURCE_DIR}/cmake/llvm-mos-toolchain.cmake
|
|
||||||
-DCMAKE_C_COMPILER=${LLVM_MOS_C_COMPILER}
|
|
||||||
-DCMAKE_CXX_COMPILER=${LLVM_MOS_CXX_COMPILER}
|
|
||||||
-DCMAKE_ASM_COMPILER=${LLVM_MOS_ASM_COMPILER}
|
|
||||||
-DCMAKE_C_FLAGS=${LLVM_MOS_ARCH_FLAGS}
|
|
||||||
-DCMAKE_CXX_FLAGS=${LLVM_MOS_ARCH_FLAGS}
|
|
||||||
-DCMAKE_ASM_FLAGS=${LLVM_MOS_ARCH_FLAGS}
|
|
||||||
-DCMAKE_EXPORT_COMPILE_COMMANDS=${CMAKE_EXPORT_COMPILE_COMMANDS}
|
|
||||||
USES_TERMINAL_CONFIGURE On
|
|
||||||
USES_TERMINAL_BUILD On
|
|
||||||
USES_TERMINAL_INSTALL On
|
|
||||||
BUILD_ALWAYS On)
|
|
||||||
ExternalProject_Get_Property(mos-platform INSTALL_DIR)
|
|
||||||
install(DIRECTORY ${INSTALL_DIR}/ DESTINATION .)
|
|
||||||
|
|
||||||
# Clean the build directories with the host project.
|
|
||||||
set_property(DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} PROPERTY
|
|
||||||
ADDITIONAL_CLEAN_FILES build ../examples)
|
|
||||||
|
|
||||||
find_package(Doxygen OPTIONAL_COMPONENTS dot)
|
|
||||||
if (Doxygen_FOUND)
|
|
||||||
set(DOXYGEN_FILE_PATTERNS *)
|
|
||||||
set(DOXYGEN_EXTENSION_MAPPING no_extension=C++)
|
|
||||||
set(DOXYGEN_EXTRACT_ALL YES)
|
|
||||||
set(DOXYGEN_EXCLUDE_SYMBOLS __*)
|
|
||||||
set(DOXYGEN_EXCLUDE_PATTERNS *.c *.cc *.s *.S *.cfg *.ld *.awk __*)
|
|
||||||
doxygen_add_docs(doxygen .)
|
|
||||||
endif()
|
|
||||||
endif()
|
|
||||||
|
|
||||||
add_subdirectory(common)
|
|
||||||
add_subdirectory(atari2600-common)
|
|
||||||
add_subdirectory(atari2600-4k)
|
|
||||||
add_subdirectory(atari2600-3e)
|
|
||||||
add_subdirectory(atari8-common)
|
|
||||||
add_subdirectory(atari8-dos)
|
|
||||||
add_subdirectory(atari8-cart-std)
|
|
||||||
add_subdirectory(atari8-cart-xegs)
|
|
||||||
add_subdirectory(commodore)
|
|
||||||
add_subdirectory(c64)
|
|
||||||
add_subdirectory(c128)
|
|
||||||
add_subdirectory(cpm65)
|
|
||||||
add_subdirectory(cx16)
|
|
||||||
add_subdirectory(eater)
|
|
||||||
add_subdirectory(f256k)
|
|
||||||
add_subdirectory(mega65)
|
|
||||||
add_subdirectory(sim)
|
|
||||||
add_subdirectory(nes)
|
|
||||||
add_subdirectory(nes-action53)
|
|
||||||
add_subdirectory(nes-cnrom)
|
|
||||||
add_subdirectory(nes-gtrom)
|
|
||||||
add_subdirectory(nes-nrom)
|
|
||||||
add_subdirectory(nes-mmc1)
|
|
||||||
add_subdirectory(nes-mmc3)
|
|
||||||
add_subdirectory(nes-unrom)
|
|
||||||
add_subdirectory(nes-unrom-512)
|
|
||||||
add_subdirectory(osi-c1p)
|
|
||||||
add_subdirectory(dodo)
|
|
||||||
add_subdirectory(pet)
|
|
||||||
add_subdirectory(rpc8e)
|
|
||||||
add_subdirectory(pce-common)
|
|
||||||
add_subdirectory(pce)
|
|
||||||
add_subdirectory(pce-cd)
|
|
||||||
add_subdirectory(vic20)
|
|
|
@ -1,4 +1,4 @@
|
||||||
platform(f256k COMPLETE PARENT common)
|
platform(f256 COMPLETE PARENT common)
|
||||||
|
|
||||||
if(NOT CMAKE_CROSSCOMPILING)
|
if(NOT CMAKE_CROSSCOMPILING)
|
||||||
return()
|
return()
|
||||||
|
@ -8,11 +8,11 @@ file(READ clang.cfg CONFIG)
|
||||||
|
|
||||||
install(FILES
|
install(FILES
|
||||||
link.ld
|
link.ld
|
||||||
settings.ld
|
output.ld
|
||||||
TYPE LIB)
|
TYPE LIB)
|
||||||
|
|
||||||
add_platform_library(f256k-crt0)
|
add_platform_library(f256-crt0)
|
||||||
merge_libraries(f256k-crt0
|
merge_libraries(f256-crt0
|
||||||
common-crt0
|
common-crt0
|
||||||
common-init-stack
|
common-init-stack
|
||||||
common-copy-zp-data
|
common-copy-zp-data
|
||||||
|
@ -20,4 +20,4 @@ merge_libraries(f256k-crt0
|
||||||
common-exit-loop
|
common-exit-loop
|
||||||
)
|
)
|
||||||
|
|
||||||
target_compile_options(f256k-crt0 PUBLIC -mcpu=mosw65c02)
|
target_compile_options(f256-crt0 PUBLIC -mcpu=mosw65c02)
|
|
@ -1,3 +1,3 @@
|
||||||
-mlto-zp=192
|
-mlto-zp=192
|
||||||
-D__F256K__
|
-D__F256__
|
||||||
-mcpu=mosw65c02
|
-mcpu=mosw65c02
|
113
llvm-mos-sdk-patches/mos-platform/f256/link.ld
Normal file
113
llvm-mos-sdk-patches/mos-platform/f256/link.ld
Normal file
|
@ -0,0 +1,113 @@
|
||||||
|
/* fake C Stack */
|
||||||
|
PROVIDE(__stack = 0xA000);
|
||||||
|
/* entry point to my program - 0x200 to 0x2ff are command line arguments */
|
||||||
|
PROVIDE(__f256_start = 0x300);
|
||||||
|
/* page size of a block of memory */
|
||||||
|
PROVIDE(__BLOCK_SIZE = 0x2000);
|
||||||
|
/* swappable block address */
|
||||||
|
PROVIDE(__SLOT_ADDR = 0xA000);
|
||||||
|
|
||||||
|
/* f256k uses first 16 bytes of ZP for mmu control? */
|
||||||
|
__rc0 = 0x10;
|
||||||
|
INCLUDE imag-regs.ld
|
||||||
|
ASSERT(__rc0 == 0x10, "Inconsistent zero page map.")
|
||||||
|
ASSERT(__rc31 == 0x2f, "Inconsistent zero page map.")
|
||||||
|
|
||||||
|
MEMORY {
|
||||||
|
/* kernel uses 0xf0-0xff for parameter passing */
|
||||||
|
zp : ORIGIN = __rc31 + 1, LENGTH = 0xF0 - (__rc31 + 1)
|
||||||
|
ram (rw) : ORIGIN = __f256_start, LENGTH = __stack-__f256_start
|
||||||
|
}
|
||||||
|
|
||||||
|
/* LMAs */
|
||||||
|
__block8_lma = ( 8<<24)|__SLOT_ADDR;
|
||||||
|
__block9_lma = ( 9<<24)|__SLOT_ADDR;
|
||||||
|
__block10_lma = (10<<24)|__SLOT_ADDR;
|
||||||
|
__block11_lma = (11<<24)|__SLOT_ADDR;
|
||||||
|
__block12_lma = (12<<24)|__SLOT_ADDR;
|
||||||
|
__block13_lma = (13<<24)|__SLOT_ADDR;
|
||||||
|
__block14_lma = (14<<24)|__SLOT_ADDR;
|
||||||
|
__block15_lma = (15<<24)|__SLOT_ADDR;
|
||||||
|
__block16_lma = (16<<24)|__SLOT_ADDR;
|
||||||
|
__block17_lma = (17<<24)|__SLOT_ADDR;
|
||||||
|
__block18_lma = (18<<24)|__SLOT_ADDR;
|
||||||
|
__block19_lma = (19<<24)|__SLOT_ADDR;
|
||||||
|
__block20_lma = (20<<24)|__SLOT_ADDR;
|
||||||
|
__block21_lma = (21<<24)|__SLOT_ADDR;
|
||||||
|
__block22_lma = (22<<24)|__SLOT_ADDR;
|
||||||
|
__block23_lma = (23<<24)|__SLOT_ADDR;
|
||||||
|
|
||||||
|
/* Stash preloaded binary data */
|
||||||
|
__binarydata_lma = 0x54000; /* Block 42 */
|
||||||
|
__BINARYDATA_SIZE = 0x2C000; /* Size of A2-3D2, 3D/2D data area, and 2 bitmaps. */
|
||||||
|
|
||||||
|
MEMORY {
|
||||||
|
block8 : ORIGIN = __block8_lma, LENGTH = __BLOCK_SIZE
|
||||||
|
block9 : ORIGIN = __block9_lma, LENGTH = __BLOCK_SIZE
|
||||||
|
block10 : ORIGIN = __block10_lma, LENGTH = __BLOCK_SIZE
|
||||||
|
block11 : ORIGIN = __block11_lma, LENGTH = __BLOCK_SIZE
|
||||||
|
block12 : ORIGIN = __block12_lma, LENGTH = __BLOCK_SIZE
|
||||||
|
block13 : ORIGIN = __block13_lma, LENGTH = __BLOCK_SIZE
|
||||||
|
block14 : ORIGIN = __block14_lma, LENGTH = __BLOCK_SIZE
|
||||||
|
block15 : ORIGIN = __block15_lma, LENGTH = __BLOCK_SIZE
|
||||||
|
block16 : ORIGIN = __block16_lma, LENGTH = __BLOCK_SIZE
|
||||||
|
block17 : ORIGIN = __block17_lma, LENGTH = __BLOCK_SIZE
|
||||||
|
block18 : ORIGIN = __block18_lma, LENGTH = __BLOCK_SIZE
|
||||||
|
block19 : ORIGIN = __block19_lma, LENGTH = __BLOCK_SIZE
|
||||||
|
block20 : ORIGIN = __block20_lma, LENGTH = __BLOCK_SIZE
|
||||||
|
block21 : ORIGIN = __block21_lma, LENGTH = __BLOCK_SIZE
|
||||||
|
block22 : ORIGIN = __block22_lma, LENGTH = __BLOCK_SIZE
|
||||||
|
block23 : ORIGIN = __block23_lma, LENGTH = __BLOCK_SIZE
|
||||||
|
/* binarydata : ORIGIN = __binarydata_lma, LENGTH = __BINARYDATA_SIZE */
|
||||||
|
}
|
||||||
|
|
||||||
|
REGION_ALIAS("c_writeable", ram)
|
||||||
|
REGION_ALIAS("c_readonly", ram)
|
||||||
|
|
||||||
|
SECTIONS {
|
||||||
|
INCLUDE c.ld
|
||||||
|
.block8 : { *(.block8 .block8.*) } >block8 end_block8 = .;
|
||||||
|
.block9 : { *(.block9 .block9.*) } >block9 end_block9 = .;
|
||||||
|
.block10 : { *(.block10 .block10.*) } >block10 end_block10 = .;
|
||||||
|
.block11 : { *(.block11 .block11.*) } >block11 end_block11 = .;
|
||||||
|
.block12 : { *(.block12 .block12.*) } >block12 end_block12 = .;
|
||||||
|
.block13 : { *(.block13 .block13.*) } >block13 end_block13 = .;
|
||||||
|
.block14 : { *(.block14 .block14.*) } >block14 end_block14 = .;
|
||||||
|
.block15 : { *(.block15 .block15.*) } >block15 end_block15 = .;
|
||||||
|
.block16 : { *(.block16 .block16.*) } >block16 end_block16 = .;
|
||||||
|
.block17 : { *(.block17 .block17.*) } >block17 end_block17 = .;
|
||||||
|
.block18 : { *(.block18 .block18.*) } >block18 end_block18 = .;
|
||||||
|
.block19 : { *(.block19 .block19.*) } >block19 end_block19 = .;
|
||||||
|
.block20 : { *(.block20 .block20.*) } >block20 end_block20 = .;
|
||||||
|
.block21 : { *(.block21 .block21.*) } >block21 end_block21 = .;
|
||||||
|
.block22 : { *(.block22 .block22.*) } >block22 end_block22 = .;
|
||||||
|
.block23 : { *(.block23 .block23.*) } >block23 end_block23 = .;
|
||||||
|
/* .binarydata : { *(.binarydata .binarydata.*) } >binarydata end_binarydata = .; */
|
||||||
|
}
|
||||||
|
|
||||||
|
OUTPUT_FORMAT {
|
||||||
|
BYTE(0x5A) /* pgZ */
|
||||||
|
|
||||||
|
/* RAM Segment */
|
||||||
|
SHORT(ORIGIN(ram)) /* where to load it, 24 bits */
|
||||||
|
BYTE(0x00)
|
||||||
|
SHORT(__bss_start-ORIGIN(ram)) /* size to load */
|
||||||
|
BYTE(0x00)
|
||||||
|
TRIM(ram)
|
||||||
|
|
||||||
|
/* Overlay Segments */
|
||||||
|
INCLUDE output.ld
|
||||||
|
|
||||||
|
/* Binary Data */
|
||||||
|
/*
|
||||||
|
SHORT(ORIGIN(binarydata))
|
||||||
|
BYTE(ORIGIN(binarydata)>>16)
|
||||||
|
SHORT(end_binarydata - __binarydata_lma)
|
||||||
|
BYTE((end_binarydata - __binarydata_lma)>>16)
|
||||||
|
TRIM(binarydata)
|
||||||
|
*/
|
||||||
|
|
||||||
|
/* Launch the program, at _start */
|
||||||
|
SHORT(_start)
|
||||||
|
LONG(0)
|
||||||
|
}
|
1
llvm-mos-sdk-patches/mos-platform/f256/output.ld
Normal file
1
llvm-mos-sdk-patches/mos-platform/f256/output.ld
Normal file
|
@ -0,0 +1 @@
|
||||||
|
/* This is generated by the overlay tool. */
|
|
@ -1,50 +0,0 @@
|
||||||
INCLUDE settings.ld
|
|
||||||
|
|
||||||
/* f256k uses first 16 bytes of ZP for mmu control? */
|
|
||||||
__rc0 = 0x10;
|
|
||||||
INCLUDE imag-regs.ld
|
|
||||||
ASSERT(__rc0 == 0x10, "Inconsistent zero page map.")
|
|
||||||
ASSERT(__rc31 == 0x2f, "Inconsistent zero page map.")
|
|
||||||
|
|
||||||
|
|
||||||
MEMORY {
|
|
||||||
/* kernel uses 0xf0-0xff for parameter passing */
|
|
||||||
zp : ORIGIN = __rc31 + 1, LENGTH = 0xF0 - (__rc31 + 1)
|
|
||||||
/* We leave slots 5-7 untouched for paging space and the microkernel */
|
|
||||||
ram (rw) : ORIGIN = __f256_start, LENGTH = 0xA000-__f256_start
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
REGION_ALIAS("c_readonly", ram)
|
|
||||||
REGION_ALIAS("c_writeable", ram)
|
|
||||||
|
|
||||||
|
|
||||||
/* NOTE: c.ld has zp.ld before text.ld.
|
|
||||||
* If the compiler decides to put data into the zeropage (.zp.data),
|
|
||||||
* then it would appear in our output binary before the .text section.
|
|
||||||
* And because the text section is our starting point, the zeropage
|
|
||||||
* data pushes our _start address up by some indeterminate amount, which
|
|
||||||
* is a pain.
|
|
||||||
* So, here I've just done the same as c.ld, but reordered things so the
|
|
||||||
* .zp data appears _after_ our .text section.
|
|
||||||
* (the zeropage data copied into the zeropage at startup by the crt
|
|
||||||
* copy-zp-data, I think)
|
|
||||||
*/
|
|
||||||
SECTIONS {
|
|
||||||
INCLUDE text.ld
|
|
||||||
INCLUDE zp.ld
|
|
||||||
INCLUDE rodata.ld
|
|
||||||
INCLUDE data.ld
|
|
||||||
INCLUDE bss.ld
|
|
||||||
INCLUDE noinit.ld
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/* Set initial soft stack address to just above last ram address. (It grows down.) */
|
|
||||||
__stack = ORIGIN(ram) + LENGTH(ram);
|
|
||||||
|
|
||||||
|
|
||||||
/* Bare Binary */
|
|
||||||
OUTPUT_FORMAT {
|
|
||||||
TRIM(ram)
|
|
||||||
}
|
|
|
@ -1 +0,0 @@
|
||||||
__f256_start = 0x0300;
|
|
Loading…
Add table
Reference in a new issue