arm: add dcc "uart" functionality
This commit is contained in:
committed by
Travis Geiselbrecht
parent
544bf4ecde
commit
e1d0b57f77
41
arch/arm/dcc.S
Normal file
41
arch/arm/dcc.S
Normal file
@@ -0,0 +1,41 @@
|
||||
/*
|
||||
* Copyright (c) 2008 Brian Swetland
|
||||
*
|
||||
* 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.
|
||||
*/
|
||||
|
||||
.global dcc_putc
|
||||
.global dcc_getc
|
||||
|
||||
#if defined(ARM_CPU_ARM1136)
|
||||
dcc_getc:
|
||||
mrc 14, 0, r0, c0, c1, 0
|
||||
tst r0, #(1 << 30)
|
||||
moveq r0, #-1
|
||||
mrcne 14, 0, r0, c0, c5, 0
|
||||
bx lr
|
||||
|
||||
dcc_putc:
|
||||
mrc 14, 0, r15, c0, c1, 0
|
||||
mcrcc 14, 0, r0, c0, c5, 0
|
||||
movcc r0, #0
|
||||
movcs r0, #-1
|
||||
bx lr
|
||||
#endif
|
||||
33
arch/arm/include/arch/arm/dcc.h
Normal file
33
arch/arm/include/arch/arm/dcc.h
Normal file
@@ -0,0 +1,33 @@
|
||||
/*
|
||||
* Copyright (c) 2008 Brian Swetland
|
||||
*
|
||||
* 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.
|
||||
*/
|
||||
|
||||
#ifndef __ARCH_ARM_DCC_H
|
||||
#define __ARCH_ARM_DCC_H
|
||||
|
||||
/* returns < 0 if no data available */
|
||||
int dcc_getc(void);
|
||||
|
||||
/* returns < 0 if output register was already full */
|
||||
int dcc_putc(unsigned c);
|
||||
|
||||
#endif
|
||||
@@ -95,7 +95,8 @@ OBJS += \
|
||||
$(LOCAL_DIR)/exceptions.o \
|
||||
$(LOCAL_DIR)/faults.o \
|
||||
$(LOCAL_DIR)/mmu.o \
|
||||
$(LOCAL_DIR)/thread.o
|
||||
$(LOCAL_DIR)/thread.o \
|
||||
$(LOCAL_DIR)/dcc.o
|
||||
|
||||
# set the default toolchain to arm elf and set a #define
|
||||
TOOLCHAIN_PREFIX ?= arm-elf-
|
||||
|
||||
Reference in New Issue
Block a user