diff options
Diffstat (limited to 'util/mkelfImage/linux-ia64/head.S')
-rw-r--r-- | util/mkelfImage/linux-ia64/head.S | 235 |
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: |