aboutsummaryrefslogtreecommitdiff
path: root/util/mkelfImage/linux-ia64/head.S
diff options
context:
space:
mode:
Diffstat (limited to 'util/mkelfImage/linux-ia64/head.S')
-rw-r--r--util/mkelfImage/linux-ia64/head.S235
1 files changed, 0 insertions, 235 deletions
diff --git a/util/mkelfImage/linux-ia64/head.S b/util/mkelfImage/linux-ia64/head.S
deleted file mode 100644
index df1b6827cb..0000000000
--- a/util/mkelfImage/linux-ia64/head.S
+++ /dev/null
@@ -1,235 +0,0 @@
-#define ASSEMBLY 1
-
- .text
-
-#include "convert.h"
-
- .globl _start
- .proc _start
-_start:
- alloc loc0=ar.pfs,1,2,3,0 /* in, local, out, rotating */
- mov loc1=rp
- mov r14=ip /* Get the address of _start, I'm in the first bundle */
- movl r15=@gprel(_start)
- ;;
- sub gp=r14,r15 /* gp = _start - @gprel(_start), current value of gp */
- ;;
- mov out0=in0
- mov out1=r28
- add out2=@gprel(params),gp
- br.call.sptk.few rp=convert_params
-
-
- mov r28=r8
- add r15=@gprel(entry), gp
- ;;
- ld8 r16=[r15]
- ;;
- mov b1=r16
- mov ar.pfs=loc0
- mov rp=loc1
- ;;
- br.cond.sptk.few b1
-
- .size _start, . - _start
- .endp _start
-
-
-#if 0
-
-/* Base Address */
-#define UART_BASE 0x00000000f8030000
-#define UART_BAUD 9600
-
-/* Data */
-#define UART_RBR 0x00
-#define UART_TBR 0x00
-/* Control */
-#define UART_IER 0x01
-#define UART_IIR 0x02
-#define UART_FCR 0x02
-#define UART_LCR 0x03
-#define UART_MCR 0x04
-
-#define UART_DLL 0x00
-#define UART_DLM 0x01
-/* Status */
-#define UART_LSR 0x05
-#define UART_MSR 0x06
-#define UART_SCR 0x07
-
-#define UART_PHYS_BASE (0x8000000000000000|UART_BASE)
-#define UART_DIV (115200/UART_BAUD)
-#define UART_DIV_LO (UART_DIV&0xFF)
-#define UART_DIV_HI ((UART_DIV >> 8)&0xFF)
-
-#if ((115200%UART_BAUD) != 0)
-#error Bad uart baud rate
-#endif
-
-/* NOTE: As these are debugging functions, they do not consume any
- * space on the register stack, and instead rely entirely on
- * scratch registers for the registers they use.
- */
-uart_init:
- /* set the UART_BASE */
- movl r31=UART_PHYS_BASE
- ;;
-
- /* disable interrupts */
- add r30=UART_IER,r31
- mov r29=0x00
- ;;
- st1 [r30]=r29
-
- /* enable fifos */
- add r30=UART_FCR,r31
- mov r29=0x01
- ;;
- st1 [r30]=r29
-
- /* Set Baud Rate Divisor to UART_BAUD */
- add r30=UART_LCR,r31
- mov r29=0x83
- ;;
- st1 [r30]=r29
-
- add r30=UART_DLL,r31
- mov r29=UART_DIV_LO
- ;;
- st1 [r30]=r29
-
- add r30=UART_DLM,r31
- mov r29=UART_DIV_HI
- ;;
- st1 [r30]=r29
-
- add r30=UART_LCR,r31
- mov r29=0x03
- ;;
- st1 [r30]=r29
-
- br.ret.sptk.few rp
-
- .proc uart_tx_byte
- .globl uart_tx_byte
-uart_tx_byte:
- /* set the UART_PHYS_BASE */
- movl r31=UART_PHYS_BASE
- ;;
-__uart_tx_byte:
- /* Wait until the UART can hold another byte */
- add r30=UART_LSR,r31
- ;;
-9: ld1.acq.nta r29=[r30]
- ;;
- and r29=0x20,r29
- ;;
- cmp.eq p63,p0=0,r29
-(p63) br.cond.sptk.few 9b
-
- /* Transmit the byte */
- add r30=UART_TBR,r31
- ;;
- st1.rel.nta [r30]=r32
- ;;
-
- /* Wait until the UART is empty to be certain the byte is flushed */
- add r30=UART_LSR,r31
- ;;
-9: ld1.acq.nta r29=[r30]
- ;;
- and r29=0x40,r29
- ;;
- cmp.eq p63,p0=0,r29
-(p63) br.cond.sptk.few 9b
- ;;
- br.ret.sptk.few rp
- .endp uart_tx_byte
-
-__uart_tx_hex_char:
- cmp.ltu p62,p63=9,r32
- ;;
-(p63) add r32=48,r32 /* digits*/
-(p62) add r32=55,r32 /* letters */
- br.cond.sptk.few __uart_tx_byte
-
-uart_tx_hex64:
- /* set the UART_bASE */
- movl r31=UART_PHYS_BASE
- /* skip r28 */
- mov r27=rp
- mov r26=ar.pfs
- mov r25=r32
- ;;
- extr.u r32=r25,60,4
- br.call.sptk.few rp=__uart_tx_hex_char
- ;;
- extr.u r32=r25,56,4
- br.call.sptk.few rp=__uart_tx_hex_char
- ;;
- extr.u r32=r25,52,4
- br.call.sptk.few rp=__uart_tx_hex_char
- ;;
- extr.u r32=r25,48,4
- br.call.sptk.few rp=__uart_tx_hex_char
- ;;
- extr.u r32=r25,44,4
- br.call.sptk.few rp=__uart_tx_hex_char
- ;;
- extr.u r32=r25,40,4
- br.call.sptk.few rp=__uart_tx_hex_char
- ;;
- extr.u r32=r25,36,4
- br.call.sptk.few rp=__uart_tx_hex_char
- ;;
- extr.u r32=r25,32,4
- br.call.sptk.few rp=__uart_tx_hex_char
- ;;
- extr.u r32=r25,28,4
- br.call.sptk.few rp=__uart_tx_hex_char
- ;;
- extr.u r32=r25,24,4
- br.call.sptk.few rp=__uart_tx_hex_char
- ;;
- extr.u r32=r25,20,4
- br.call.sptk.few rp=__uart_tx_hex_char
- ;;
- extr.u r32=r25,16,4
- br.call.sptk.few rp=__uart_tx_hex_char
- ;;
- extr.u r32=r25,12,4
- br.call.sptk.few rp=__uart_tx_hex_char
- ;;
- extr.u r32=r25,8,4
- br.call.sptk.few rp=__uart_tx_hex_char
- ;;
- extr.u r32=r25,4,4
- br.call.sptk.few rp=__uart_tx_hex_char
- ;;
- extr.u r32=r25,0,4
- br.call.sptk.few rp=__uart_tx_hex_char
- ;;
- mov ar.pfs = r26
- mov rp = r27
- ;;
- br.ret.sptk.few rp
-#endif
-
- .section ".trailer", "a"
- /* Constants set at build time, these are at the very end of my image */
- .balign 16
- .global params
-params:
-convert_magic:
- .quad CONVERT_MAGIC
-entry:
- .quad 0
-initrd_start:
- .quad 0
-initrd_size:
- .quad 0
-cmdline:
- .asciz "BOOT_IMAGE=head.S console=ttyS0 ip=dhcp root=/dev/nfs"
- .org cmdline + 1024, 0
-cmdline_end: