blob: bd660993196ca690eb853eb3262ee89d395aef47 [file] [log] [blame]
/*
* Copyright 2022 The Pigweed Authors
*
* Licensed under the Apache License, Version 2.0 (the "License"); you may not
* use this file except in compliance with the License. You may obtain a copy of
* the License at
*
* https://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* 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.
*/
/* This linker script is for test purposes only and should not be used in a
* production environment.
*/
#ifndef PW_BOOT_VECTOR_TABLE_BEGIN
#error "PW_BOOT_VECTOR_TABLE_BEGIN is not defined, and is required to use pw_boot_cortex_m"
#endif // PW_BOOT_VECTOR_TABLE_BEGIN
/* Note: This technically doesn't set the firmware's entry point. Setting the
* firmware entry point is done by setting vector_table[1]
* (Reset_Handler). However, this DOES tell the compiler how to optimize
* when --gc-sections is enabled.
*/
ENTRY(pw_boot_Entry)
MEMORY
{
/* TODO(b/234892223): Make it possible for projects to freely customize
* memory regions.
*/
/* Vector Table (typically in flash) */
VECTOR_TABLE(rx) : \
ORIGIN = PW_BOOT_VECTOR_TABLE_BEGIN, \
LENGTH = PW_BOOT_VECTOR_TABLE_SIZE
/* Internal Flash */
FLASH(rx) : \
ORIGIN = PW_BOOT_FLASH_BEGIN, \
LENGTH = PW_BOOT_FLASH_SIZE
/* Internal SRAM */
RAM(rwx) : \
ORIGIN = PW_BOOT_RAM_BEGIN, \
LENGTH = PW_BOOT_RAM_SIZE
}