forked from OpenRTX/sa8x8-fw
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Add initial support for SA868 v1.1 OpenRTX#3
- Loading branch information
1 parent
4b5f038
commit 6556eb4
Showing
9 changed files
with
2,109 additions
and
12 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,6 +1,8 @@ | ||
*.o | ||
*.elf | ||
*.bin | ||
*.s28 | ||
*.s37 | ||
*.sif | ||
*.map | ||
/src/version.h |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,186 @@ | ||
/* | ||
Copyright (c) 2005,2008 Red Hat Incorporated. | ||
All rights reserved. | ||
Redistribution and use in source and binary forms, with or without | ||
modification, are permitted provided that the following conditions are met: | ||
Redistributions of source code must retain the above copyright | ||
notice, this list of conditions and the following disclaimer. | ||
Redistributions in binary form must reproduce the above copyright | ||
notice, this list of conditions and the following disclaimer in the | ||
documentation and/or other materials provided with the distribution. | ||
The name of Red Hat Incorporated may not be used to endorse | ||
or promote products derived from this software without specific | ||
prior written permission. | ||
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" | ||
AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE | ||
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE | ||
DISCLAIMED. IN NO EVENT SHALL RED HAT INCORPORATED BE LIABLE FOR ANY | ||
DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES | ||
(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; | ||
LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND | ||
ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT | ||
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS | ||
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | ||
*/ | ||
|
||
#if defined(__r8c_cpu__) || defined(__m16c_cpu__) | ||
#define A16 | ||
#define A(n,w) n | ||
#define W w | ||
#define ALIGN 1 | ||
#else | ||
#define A24 | ||
#define A(n,w) w | ||
#define W l | ||
#define ALIGN 2 | ||
#endif | ||
|
||
.section ".resetvec","ax",@progbits | ||
.long _start | ||
|
||
.text | ||
|
||
.global _start | ||
_start: | ||
.LFB2: | ||
fclr U /* One stack for user and interrupts */ | ||
ldc #__stack,sp | ||
|
||
#ifdef A16 | ||
mov.b #%hi8(__romdatastart),r1h | ||
mov.w #%lo16(__romdatastart),a0 | ||
mov.w #__datastart,a1 | ||
#else | ||
mov.l #__romdatastart,a0 | ||
mov.l #__datastart,a1 | ||
#endif | ||
mov.w #__romdatacopysize,r3 | ||
shl.w #-1,r3 | ||
smovf.w | ||
|
||
#ifdef A16 | ||
mov.w #__bssstart,a1 | ||
#else | ||
mov.l #__bssstart,a1 | ||
#endif | ||
mov.w #__bsssize,r3 | ||
shl.w #-1,r3 | ||
mov.w #0,r0 | ||
sstr.w | ||
|
||
#ifdef A16 | ||
ldc #%lo16(__var_vects),intbl | ||
ldc #%hi16(__var_vects),intbh | ||
#else | ||
ldc #__var_vects,intb | ||
#endif | ||
|
||
fset I | ||
jsr.a __m32c_init | ||
|
||
jsr.a _main | ||
.LFE2: | ||
|
||
#ifdef A24 | ||
/* rv in r0, ok for arg0 */ | ||
#else | ||
mov.w r0,r1 | ||
#endif | ||
|
||
jsr.a _exit | ||
|
||
.text | ||
|
||
.global _m32c_run_preinit_array | ||
.type _m32c_run_preinit_array,@function | ||
_m32c_run_preinit_array: | ||
mov.W #__preinit_array_start,a0 | ||
mov.W #__preinit_array_end,a1 | ||
jmp.w _m32c_run_inilist | ||
|
||
.global _m32c_run_init_array | ||
.type _m32c_run_init_array,@function | ||
_m32c_run_init_array: | ||
mov.W #__init_array_start,a0 | ||
mov.W #__init_array_end,a1 | ||
jmp.w _m32c_run_inilist | ||
|
||
.global _m32c_run_fini_array | ||
.type _m32c_run_fini_array,@function | ||
_m32c_run_fini_array: | ||
mov.W #__fini_array_start,a0 | ||
mov.W #__fini_array_end,a1 | ||
/* fall through */ | ||
|
||
_m32c_run_inilist: | ||
next_inilist: | ||
cmp.W a0,a1 | ||
jeq done_inilist | ||
pushm a0,a1 | ||
mov.W [a0],a0 | ||
#ifdef A16 | ||
mov.b:s #0,a1 /* zero extends */ | ||
jsri.a a1a0 | ||
#else | ||
jsri.a a0 | ||
#endif | ||
popm a0,a1 | ||
add.W A(#2,#4),a0 | ||
jmp.b next_inilist | ||
done_inilist: | ||
rts | ||
|
||
.section .init,"ax",@progbits | ||
|
||
.global __m32c_init | ||
__m32c_init: | ||
enter #0 | ||
|
||
.section .fini,"ax",@progbits | ||
|
||
.global __m32c_fini | ||
__m32c_fini: | ||
enter #0 | ||
jsr.a _m32c_run_fini_array | ||
|
||
|
||
;;; Provide Dwarf unwinding information that will help GDB stop | ||
;;; backtraces at the right place. This is stolen from assembly | ||
;;; code generated by GCC with -dA. | ||
.section .debug_frame,"",@progbits | ||
.Lframe0: | ||
.4byte .LECIE0-.LSCIE0 ; Length of Common Information Entry | ||
.LSCIE0: | ||
.4byte 0xffffffff ; CIE Identifier Tag | ||
.byte 0x1 ; CIE Version | ||
.ascii "\0" ; CIE Augmentation | ||
.uleb128 0x1 ; CIE Code Alignment Factor | ||
.sleb128 -1 ; CIE Data Alignment Factor | ||
.byte 0xd ; CIE RA Column | ||
.byte 0xc ; DW_CFA_def_cfa | ||
.uleb128 0xc | ||
.uleb128 0x3 | ||
.byte 0x8d ; DW_CFA_offset, column 0xd | ||
.uleb128 0x3 | ||
.p2align ALIGN | ||
.LECIE0: | ||
.LSFDE0: | ||
.4byte .LEFDE0-.LASFDE0 ; FDE Length | ||
.LASFDE0: | ||
.4byte .Lframe0 ; FDE CIE offset | ||
.4byte .LFB2 ; FDE initial location | ||
.4byte .LFE2-.LFB2 ; FDE address range | ||
.byte 0xf ; DW_CFA_def_cfa_expression | ||
.uleb128 1 ; length of expression | ||
.byte 0x30 ; DW_OP_lit0 | ||
.p2align ALIGN | ||
.LEFDE0: | ||
|
||
.text |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,40 @@ | ||
/*************************************************************************** | ||
* Copyright (C) 2024 by Niccolò Izzo IU2KIN * | ||
* * | ||
* 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 3 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, see <http://www.gnu.org/licenses/> * | ||
***************************************************************************/ | ||
|
||
#include "interrupts.h" | ||
#include "common.h" | ||
#include "registers.h" | ||
|
||
void INT_BRK_I(void) {} | ||
void INT_KI(void) {} | ||
void INT_AD(void) {} | ||
void INT_IIC(void) {} | ||
void INT_CMP1(void) {} | ||
void INT_ST0(void) {} | ||
void INT_SR0(void) { | ||
ring_put(&rx, (char)u0rb); | ||
ir_s0ric = 0U; | ||
} | ||
void INT_ST1(void) {} | ||
void INT_SR1(void) {} | ||
void INT_TMRX(void) {} | ||
void INT_TMRZ(void) {} | ||
void INT_INT1(void) {} | ||
void INT_INT3(void) {} | ||
void INT_TMRC(void) {} | ||
void INT_CMP0(void) {} | ||
void INT_INT0(void) {} |
Oops, something went wrong.