/SPARTAN/trunk/arch/ia64/src/cpu/cpu.c |
---|
0,0 → 1,43 |
#include <cpu.h> |
#include <print.h> |
#include <panic.h> |
#include <arch/types.h> |
extern int IVT; |
void cpu_arch_init(void) |
{ |
int *p=&IVT; |
volatile __u64 hlp,hlp2; |
int psr = 0x2000; |
__asm__ volatile ( |
"mov cr2 = %0;;\n" |
"{mov psr.l = %1;;}\n" |
"{srlz.i;" |
"srlz.d;;}" |
: |
: "r" (p), "r" (psr) |
); |
/*Switch register bank of regs r16 .. r31 to 1 It is automaticly cleared on exception*/ |
__asm__ volatile |
( |
"bsw.1;;\n" |
); |
} |
/SPARTAN/trunk/arch/ia64/src/interrupt_handler.c |
---|
0,0 → 1,137 |
/* |
* Copyright (C) 2005 Jakub Vana |
* 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 the author may not be used to endorse or promote products |
* derived from this software without specific prior written permission. |
* |
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``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 THE AUTHOR 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. |
* |
*/ |
#include <panic.h> |
#include <print.h> |
#include <arch/types.h> |
#include <arch/asm.h> |
#include <symtab.h> |
extern __u64 REG_DUMP; |
void general_exception(void); |
void general_exception(void) |
{ |
panic("\nGeneral Exception\n"); |
} |
void break_instruction(void); |
void break_instruction(void) |
{ |
panic("\nBreak Instruction\n"); |
} |
#define cr_dump(r) {__u64 val; get_control_register(r,val); printf("\ncr"#r":%Q",val);} |
#define ar_dump(r) {__u64 val; get_aplication_register(r,val); printf("\nar"#r":%Q",val);} |
void universal_handler(void); |
void universal_handler(void) |
{ |
__u64 vector,psr,PC; |
__u64 *p; |
int i; |
char *sym; |
get_shadow_register(16,vector); |
p=®_DUMP; |
for(i=0;i<128;i+=2) printf("gr%d:%Q\tgr%d:%Q\n",i,p[i],i+1,p[i+1]); |
cr_dump(0); |
cr_dump(1); |
cr_dump(2); |
cr_dump(8); |
cr_dump(16); |
cr_dump(17); |
cr_dump(19);get_control_register(19,PC); if(sym=get_symtab_entry(PC)) printf("(%s)",sym); |
cr_dump(20);get_control_register(20,PC); if(sym=get_symtab_entry(PC)) printf("(%s)",sym); |
cr_dump(21); |
cr_dump(22);get_control_register(22,PC); if(sym=get_symtab_entry(PC)) printf("(%s)",sym); |
cr_dump(23); |
cr_dump(24); |
cr_dump(25); |
cr_dump(64); |
cr_dump(65); |
cr_dump(66); |
cr_dump(67); |
cr_dump(68); |
cr_dump(69); |
cr_dump(70); |
cr_dump(71); |
cr_dump(72); |
cr_dump(73); |
cr_dump(74); |
cr_dump(80); |
cr_dump(81); |
ar_dump(0); |
ar_dump(1); |
ar_dump(2); |
ar_dump(3); |
ar_dump(4); |
ar_dump(5); |
ar_dump(6); |
ar_dump(7); |
ar_dump(16); |
ar_dump(17); |
ar_dump(18); |
ar_dump(19); |
ar_dump(21); |
ar_dump(24); |
ar_dump(25); |
ar_dump(26); |
ar_dump(27); |
ar_dump(28); |
ar_dump(29); |
ar_dump(30); |
ar_dump(32); |
ar_dump(36); |
ar_dump(40); |
ar_dump(44); |
ar_dump(64); |
ar_dump(65); |
ar_dump(66); |
get_psr(psr); |
printf("\nPSR:%Q\n",psr); |
panic("\nException:%Q\n",vector); |
} |
/SPARTAN/trunk/arch/ia64/src/start.S |
---|
0,0 → 1,73 |
# |
# Copyright (C) 2005 Jakub Jermar |
# 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 the author may not be used to endorse or promote products |
# derived from this software without specific prior written permission. |
# |
# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``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 THE AUTHOR 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. |
# |
.section K_TEXT_START |
.global kernel_image_start |
stack0: |
kernel_image_start: |
.auto |
# initialize PSR |
{mov psr.l = r0;;} |
{srlz.i; |
srlz.d;;} |
# initialize register stack |
mov ar.rsc = r0 |
mov ar.bspstore = r0 |
loadrs |
.explicit |
# initialize memory stack to some sane value |
movl r12 = stack0 ;; |
add r12 = - 16, r12 /* allocate a scratch area on the stack */ |
# initialize gp (Global Pointer) register |
movl r1 = _hardcoded_load_address |
;; |
# |
# Initialize hardcoded_* variables. |
# |
movl r14 = _hardcoded_ktext_size |
movl r15 = _hardcoded_kdata_size |
movl r16 = _hardcoded_load_address |
addl r17 = @gprel(hardcoded_ktext_size), gp |
addl r18 = @gprel(hardcoded_kdata_size), gp |
addl r19 = @gprel(hardcoded_load_address), gp |
;; |
st4 [r17] = r14 |
st4 [r18] = r15 |
st8 [r19] = r16 |
br.call.sptk.many b0=main_bsp |
0: |
br 0b |
/SPARTAN/trunk/arch/ia64/src/fmath.c |
---|
0,0 → 1,161 |
/* |
* Copyright (C) 2005 Josef Cejka |
* 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 the author may not be used to endorse or promote products |
* derived from this software without specific prior written permission. |
* |
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``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 THE AUTHOR 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. |
*/ |
#include <arch/fmath.h> |
#include <print.h> |
//TODO: |
#define FMATH_MANTISA_MASK ( 0x000fffffffffffffLL ) |
signed short fmath_get_binary_exponent(double num) |
{ //TODO: |
/* fmath_ld_union_t fmath_ld_union; |
fmath_ld_union.bf = num; |
return (signed short)((((fmath_ld_union.ldd[7])&0x7f)<<4) + (((fmath_ld_union.ldd[6])&0xf0)>>4)) -FMATH_EXPONENT_BIAS; // exponent is 11 bits lenght, so sevent bits is in 8th byte and 4 bits in 7th |
*/ |
return 0; |
} |
double fmath_get_decimal_exponent(double num) |
{ //TODO: |
double value; |
// log10(2)*log2(x) => log10(x) |
/* __asm__ __volatile__ ( \ |
"fldlg2 #load log10(2) \n\t" \ |
"fxch %%st(1) \n\t" \ |
"fyl2x #count st(0)*log2(st(1))->st(1); pop st(0) \n\t" \ |
: "=t" (value) : "0"(num) ); |
*/ return value; |
} |
__u64 fmath_get_binary_mantisa(double num) |
{ //TODO: |
/* union { __u64 _u; double _d;} un = { _d : num }; |
un._u=un._u &(FMATH_MANTISA_MASK); // mask 52 bits of mantisa |
return un._u; |
*/ |
return 0; |
} |
double fmath_fint(double num, double *intp) |
{ //TODO: |
/* fmath_ld_union_t fmath_ld_union_num; |
fmath_ld_union_t fmath_ld_union_int; |
signed short exp; |
__u64 mask,mantisa; |
int i; |
exp=fmath_get_binary_exponent(num); |
if (exp<0) { |
*intp = 0.0; |
*intp = fmath_set_sign(0.0L,fmath_is_negative(num)); |
return num; |
} |
if (exp>51) { |
*intp=num; |
num=0.0; |
num= fmath_set_sign(0.0L,fmath_is_negative(*intp)); |
return num; |
} |
fmath_ld_union_num.bf = num; |
mask = FMATH_MANTISA_MASK>>exp; |
//mantisa = (fmath_get-binary_mantisa(num))&(~mask); |
for (i=0;i<7;i++) { |
// Ugly construction for obtain sign, exponent and integer part from num |
fmath_ld_union_int.ldd[i]=fmath_ld_union_num.ldd[i]&(((~mask)>>(i*8))&0xff); |
} |
fmath_ld_union_int.ldd[6]|=((fmath_ld_union_num.ldd[6])&(0xf0)); |
fmath_ld_union_int.ldd[7]=fmath_ld_union_num.ldd[7]; |
*intp=fmath_ld_union_int.bf; |
return fmath_ld_union_num.bf-fmath_ld_union_int.bf; |
*/ |
return 0.0; |
}; |
double fmath_dpow(double base, double exponent) |
{ //TODO: |
/* double value=1.0; |
if (base<=0.0) return base; |
//2^(x*log2(10)) = 2^y = 10^x |
__asm__ __volatile__ ( \ |
"fyl2x # ST(1):=ST(1)*log2(ST(0)), pop st(0) \n\t " \ |
"fld %%st(0) \n\t" \ |
"frndint \n\t" \ |
"fxch %%st(1) \n\t" \ |
"fsub %%st(1),%%st(0) \n\t" \ |
"f2xm1 # ST := 2^ST -1\n\t" \ |
"fld1 \n\t" \ |
"faddp %%st(0),%%st(1) \n\t" \ |
"fscale #ST:=ST*2^(ST(1))\n\t" \ |
"fstp %%st(1) \n\t" \ |
"" : "=t" (value) : "0" (base), "u" (exponent) ); |
return value; |
*/ |
return 1.0; |
} |
int fmath_is_nan(double num) |
{ |
/* __u16 exp; |
fmath_ld_union_t fmath_ld_union; |
fmath_ld_union.bf = num; |
exp=(((fmath_ld_union.ldd[7])&0x7f)<<4) + (((fmath_ld_union.ldd[6])&0xf0)>>4); // exponent is 11 bits lenght, so sevent bits is in 8th byte and 4 bits in 7th |
if (exp!=0x07ff) return 0; |
if (fmath_get_binary_mantisa(num)>=FMATH_NAN) return 1; |
*/ |
return 0; |
} |
int fmath_is_infinity(double num) |
{ |
/* __u16 exp; |
fmath_ld_union_t fmath_ld_union; |
fmath_ld_union.bf = num; |
exp=(((fmath_ld_union.ldd[7])&0x7f)<<4) + (((fmath_ld_union.ldd[6])&0xf0)>>4); // exponent is 11 bits lenght, so sevent bits is in 8th byte and 4 bits in 7th |
if (exp!=0x07ff) return 0; |
if (fmath_get_binary_mantisa(num)==0x0) return 1; |
*/ return 0; |
} |
/SPARTAN/trunk/arch/ia64/src/ivt.S |
---|
0,0 → 1,461 |
# |
# Copyright (C) 2005 Jakub Vana |
# 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 the author may not be used to endorse or promote products |
# derived from this software without specific prior written permission. |
# |
# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``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 THE AUTHOR 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. |
# |
dump_gregs: |
mov r16 = REG_DUMP;; |
st8 [r16] = r0;; |
add r16 = 8,r16 ;; |
st8 [r16] = r1;; |
add r16 = 8,r16 ;; |
st8 [r16] = r2;; |
add r16 = 8,r16 ;; |
st8 [r16] = r3;; |
add r16 = 8,r16 ;; |
st8 [r16] = r4;; |
add r16 = 8,r16 ;; |
st8 [r16] = r5;; |
add r16 = 8,r16 ;; |
st8 [r16] = r6;; |
add r16 = 8,r16 ;; |
st8 [r16] = r7;; |
add r16 = 8,r16 ;; |
st8 [r16] = r8;; |
add r16 = 8,r16 ;; |
st8 [r16] = r9;; |
add r16 = 8,r16 ;; |
st8 [r16] = r10;; |
add r16 = 8,r16 ;; |
st8 [r16] = r11;; |
add r16 = 8,r16 ;; |
st8 [r16] = r12;; |
add r16 = 8,r16 ;; |
st8 [r16] = r13;; |
add r16 = 8,r16 ;; |
st8 [r16] = r14;; |
add r16 = 8,r16 ;; |
st8 [r16] = r15;; |
add r16 = 8,r16 ;; |
bsw.1;; |
mov r15 = r16;; |
bsw.0;; |
st8 [r16] = r15;; |
add r16 = 8,r16 ;; |
bsw.1;; |
mov r15 = r17;; |
bsw.0;; |
st8 [r16] = r15;; |
add r16 = 8,r16 ;; |
bsw.1;; |
mov r15 = r18;; |
bsw.0;; |
st8 [r16] = r15;; |
add r16 = 8,r16 ;; |
bsw.1;; |
mov r15 = r19;; |
bsw.0;; |
st8 [r16] = r15;; |
add r16 = 8,r16 ;; |
bsw.1;; |
mov r15 = r20;; |
bsw.0;; |
st8 [r16] = r15;; |
add r16 = 8,r16 ;; |
bsw.1;; |
mov r15 = r21;; |
bsw.0;; |
st8 [r16] = r15;; |
add r16 = 8,r16 ;; |
bsw.1;; |
mov r15 = r22;; |
bsw.0;; |
st8 [r16] = r15;; |
add r16 = 8,r16 ;; |
bsw.1;; |
mov r15 = r23;; |
bsw.0;; |
st8 [r16] = r15;; |
add r16 = 8,r16 ;; |
bsw.1;; |
mov r15 = r24;; |
bsw.0;; |
st8 [r16] = r15;; |
add r16 = 8,r16 ;; |
bsw.1;; |
mov r15 = r25;; |
bsw.0;; |
st8 [r16] = r15;; |
add r16 = 8,r16 ;; |
bsw.1;; |
mov r15 = r26;; |
bsw.0;; |
st8 [r16] = r15;; |
add r16 = 8,r16 ;; |
bsw.1;; |
mov r15 = r27;; |
bsw.0;; |
st8 [r16] = r15;; |
add r16 = 8,r16 ;; |
bsw.1;; |
mov r15 = r28;; |
bsw.0;; |
st8 [r16] = r15;; |
add r16 = 8,r16 ;; |
bsw.1;; |
mov r15 = r29;; |
bsw.0;; |
st8 [r16] = r15;; |
add r16 = 8,r16 ;; |
bsw.1;; |
mov r15 = r30;; |
bsw.0;; |
st8 [r16] = r15;; |
add r16 = 8,r16 ;; |
bsw.1;; |
mov r15 = r31;; |
bsw.0;; |
st8 [r16] = r15;; |
add r16 = 8,r16 ;; |
st8 [r16] = r32;; |
add r16 = 8,r16 ;; |
st8 [r16] = r33;; |
add r16 = 8,r16 ;; |
st8 [r16] = r34;; |
add r16 = 8,r16 ;; |
st8 [r16] = r35;; |
add r16 = 8,r16 ;; |
st8 [r16] = r36;; |
add r16 = 8,r16 ;; |
st8 [r16] = r37;; |
add r16 = 8,r16 ;; |
st8 [r16] = r38;; |
add r16 = 8,r16 ;; |
st8 [r16] = r39;; |
add r16 = 8,r16 ;; |
st8 [r16] = r40;; |
add r16 = 8,r16 ;; |
st8 [r16] = r41;; |
add r16 = 8,r16 ;; |
st8 [r16] = r42;; |
add r16 = 8,r16 ;; |
st8 [r16] = r43;; |
add r16 = 8,r16 ;; |
st8 [r16] = r44;; |
add r16 = 8,r16 ;; |
st8 [r16] = r45;; |
add r16 = 8,r16 ;; |
st8 [r16] = r46;; |
add r16 = 8,r16 ;; |
st8 [r16] = r47;; |
add r16 = 8,r16 ;; |
st8 [r16] = r48;; |
add r16 = 8,r16 ;; |
st8 [r16] = r49;; |
add r16 = 8,r16 ;; |
st8 [r16] = r50;; |
add r16 = 8,r16 ;; |
st8 [r16] = r51;; |
add r16 = 8,r16 ;; |
st8 [r16] = r52;; |
add r16 = 8,r16 ;; |
st8 [r16] = r53;; |
add r16 = 8,r16 ;; |
st8 [r16] = r54;; |
add r16 = 8,r16 ;; |
st8 [r16] = r55;; |
add r16 = 8,r16 ;; |
st8 [r16] = r56;; |
add r16 = 8,r16 ;; |
st8 [r16] = r57;; |
add r16 = 8,r16 ;; |
st8 [r16] = r58;; |
add r16 = 8,r16 ;; |
st8 [r16] = r59;; |
add r16 = 8,r16 ;; |
st8 [r16] = r60;; |
add r16 = 8,r16 ;; |
st8 [r16] = r61;; |
add r16 = 8,r16 ;; |
st8 [r16] = r62;; |
add r16 = 8,r16 ;; |
st8 [r16] = r63;; |
add r16 = 8,r16 ;; |
st8 [r16] = r64;; |
add r16 = 8,r16 ;; |
st8 [r16] = r65;; |
add r16 = 8,r16 ;; |
st8 [r16] = r66;; |
add r16 = 8,r16 ;; |
st8 [r16] = r67;; |
add r16 = 8,r16 ;; |
st8 [r16] = r68;; |
add r16 = 8,r16 ;; |
st8 [r16] = r69;; |
add r16 = 8,r16 ;; |
st8 [r16] = r70;; |
add r16 = 8,r16 ;; |
st8 [r16] = r71;; |
add r16 = 8,r16 ;; |
st8 [r16] = r72;; |
add r16 = 8,r16 ;; |
st8 [r16] = r73;; |
add r16 = 8,r16 ;; |
st8 [r16] = r74;; |
add r16 = 8,r16 ;; |
st8 [r16] = r75;; |
add r16 = 8,r16 ;; |
st8 [r16] = r76;; |
add r16 = 8,r16 ;; |
st8 [r16] = r77;; |
add r16 = 8,r16 ;; |
st8 [r16] = r78;; |
add r16 = 8,r16 ;; |
st8 [r16] = r79;; |
add r16 = 8,r16 ;; |
st8 [r16] = r80;; |
add r16 = 8,r16 ;; |
st8 [r16] = r81;; |
add r16 = 8,r16 ;; |
st8 [r16] = r82;; |
add r16 = 8,r16 ;; |
st8 [r16] = r83;; |
add r16 = 8,r16 ;; |
st8 [r16] = r84;; |
add r16 = 8,r16 ;; |
st8 [r16] = r85;; |
add r16 = 8,r16 ;; |
st8 [r16] = r86;; |
add r16 = 8,r16 ;; |
st8 [r16] = r87;; |
add r16 = 8,r16 ;; |
st8 [r16] = r88;; |
add r16 = 8,r16 ;; |
st8 [r16] = r89;; |
add r16 = 8,r16 ;; |
st8 [r16] = r90;; |
add r16 = 8,r16 ;; |
st8 [r16] = r91;; |
add r16 = 8,r16 ;; |
st8 [r16] = r92;; |
add r16 = 8,r16 ;; |
st8 [r16] = r93;; |
add r16 = 8,r16 ;; |
st8 [r16] = r94;; |
add r16 = 8,r16 ;; |
st8 [r16] = r95;; |
add r16 = 8,r16 ;; |
st8 [r16] = r96;; |
add r16 = 8,r16 ;; |
st8 [r16] = r97;; |
add r16 = 8,r16 ;; |
st8 [r16] = r98;; |
add r16 = 8,r16 ;; |
st8 [r16] = r99;; |
add r16 = 8,r16 ;; |
st8 [r16] = r100;; |
add r16 = 8,r16 ;; |
st8 [r16] = r101;; |
add r16 = 8,r16 ;; |
st8 [r16] = r102;; |
add r16 = 8,r16 ;; |
st8 [r16] = r103;; |
add r16 = 8,r16 ;; |
st8 [r16] = r104;; |
add r16 = 8,r16 ;; |
st8 [r16] = r105;; |
add r16 = 8,r16 ;; |
st8 [r16] = r106;; |
add r16 = 8,r16 ;; |
st8 [r16] = r107;; |
add r16 = 8,r16 ;; |
st8 [r16] = r108;; |
add r16 = 8,r16 ;; |
st8 [r16] = r109;; |
add r16 = 8,r16 ;; |
st8 [r16] = r110;; |
add r16 = 8,r16 ;; |
st8 [r16] = r111;; |
add r16 = 8,r16 ;; |
st8 [r16] = r112;; |
add r16 = 8,r16 ;; |
st8 [r16] = r113;; |
add r16 = 8,r16 ;; |
st8 [r16] = r114;; |
add r16 = 8,r16 ;; |
st8 [r16] = r115;; |
add r16 = 8,r16 ;; |
st8 [r16] = r116;; |
add r16 = 8,r16 ;; |
st8 [r16] = r117;; |
add r16 = 8,r16 ;; |
st8 [r16] = r118;; |
add r16 = 8,r16 ;; |
st8 [r16] = r119;; |
add r16 = 8,r16 ;; |
st8 [r16] = r120;; |
add r16 = 8,r16 ;; |
st8 [r16] = r121;; |
add r16 = 8,r16 ;; |
st8 [r16] = r122;; |
add r16 = 8,r16 ;; |
st8 [r16] = r123;; |
add r16 = 8,r16 ;; |
st8 [r16] = r124;; |
add r16 = 8,r16 ;; |
st8 [r16] = r125;; |
add r16 = 8,r16 ;; |
st8 [r16] = r126;; |
add r16 = 8,r16 ;; |
st8 [r16] = r127;; |
add r16 = 8,r16 ;; |
br.ret.sptk.many b0;; |
.macro Handler o h |
.org IVT + \o |
br \h;; |
.endm |
.macro Handler2 o |
.org IVT + \o |
br.call.sptk.many b0 = dump_gregs;; |
mov r16 = \o ;; |
bsw.1;; |
br universal_handler;; |
.endm |
.global IVT |
.align 32768 |
IVT: |
Handler2 0x0000 |
Handler2 0x0400 |
Handler2 0x0800 |
Handler2 0x0c00 |
Handler2 0x1000 |
Handler2 0x1400 |
Handler2 0x1800 |
Handler2 0x1c00 |
Handler2 0x2000 |
Handler2 0x2400 |
Handler2 0x2800 |
Handler 0x2c00 break_instruction |
Handler2 0x3000 |
Handler2 0x3400 |
Handler2 0x3800 |
Handler2 0x3c00 |
Handler2 0x4000 |
Handler2 0x4400 |
Handler2 0x4800 |
Handler2 0x4c00 |
Handler2 0x5000 |
Handler2 0x5100 |
Handler2 0x5200 |
Handler2 0x5300 |
#Handler 0x5400 general_exception |
Handler2 0x5400 |
Handler2 0x5500 |
Handler2 0x5600 |
Handler2 0x5700 |
Handler2 0x5800 |
Handler2 0x5900 |
Handler2 0x5a00 |
Handler2 0x5b00 |
Handler2 0x5c00 |
Handler2 0x5d00 |
Handler2 0x5e00 |
Handler2 0x5f00 |
Handler2 0x6000 |
Handler2 0x6100 |
Handler2 0x6200 |
Handler2 0x6300 |
Handler2 0x6400 |
Handler2 0x6500 |
Handler2 0x6600 |
Handler2 0x6700 |
Handler2 0x6800 |
Handler2 0x6900 |
Handler2 0x6a00 |
Handler2 0x6b00 |
Handler2 0x6c00 |
Handler2 0x6d00 |
Handler2 0x6e00 |
Handler2 0x6f00 |
Handler2 0x7000 |
Handler2 0x7100 |
Handler2 0x7200 |
Handler2 0x7300 |
Handler2 0x7400 |
Handler2 0x7500 |
Handler2 0x7600 |
Handler2 0x7700 |
Handler2 0x7800 |
Handler2 0x7900 |
Handler2 0x7a00 |
Handler2 0x7b00 |
Handler2 0x7c00 |
Handler2 0x7d00 |
Handler2 0x7e00 |
Handler2 0x7f00 |
.align 32768 |
.global REG_DUMP |
REG_DUMP: |
.space 128*8 |
/SPARTAN/trunk/arch/ia64/src/dummy.s |
---|
0,0 → 1,62 |
# |
# Copyright (C) 2005 Jakub Jermar |
# 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 the author may not be used to endorse or promote products |
# derived from this software without specific prior written permission. |
# |
# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``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 THE AUTHOR 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. |
# |
.text |
.global calibrate_delay_loop |
.global asm_delay_loop |
.global userspace |
.global before_thread_runs_arch |
.global arch_late_init |
.global cpu_identify |
.global cpu_print_report |
.global cpu_priority_high |
.global cpu_priority_low |
.global cpu_priority_read |
.global cpu_priority_restore |
.global cpu_sleep |
.global frame_arch_init |
.global dummy |
before_thread_runs_arch: |
userspace: |
calibrate_delay_loop: |
asm_delay_loop: |
arch_late_init: |
cpu_identify: |
cpu_print_report: |
cpu_priority_high: |
cpu_priority_low: |
cpu_priority_read: |
cpu_priority_restore: |
cpu_sleep: |
frame_arch_init: |
dummy: |
br.ret.sptk.many b0 |
/SPARTAN/trunk/arch/ia64/src/asm.S |
---|
0,0 → 1,48 |
# |
# Copyright (C) 2005 Jakub Jermar |
# 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 the author may not be used to endorse or promote products |
# derived from this software without specific prior written permission. |
# |
# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``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 THE AUTHOR 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. |
# |
.text |
.global memcpy |
memcpy: |
br _memcpy |
.global memsetb |
memsetb: |
br _memsetb |
.global cpu_halt |
cpu_halt: |
br cpu_halt |
.global panic_printf |
panic_printf: |
{ |
br.call.sptk.many b0=printf |
} |
br cpu_halt |
/SPARTAN/trunk/arch/ia64/src/fpu_context.c |
---|
0,0 → 1,48 |
/* |
* Copyright (C) 2005 Jakub Vana |
* 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 the author may not be used to endorse or promote products |
* derived from this software without specific prior written permission. |
* |
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``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 THE AUTHOR 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. |
* |
*/ |
#include <fpu_context.h> |
void fpu_context_save(fpu_context_t *fctx) |
{ |
} |
void fpu_context_restore(fpu_context_t *fctx) |
{ |
} |
void fpu_lazy_context_save(fpu_context_t *fctx) |
{ |
} |
void fpu_lazy_context_restore(fpu_context_t *fctx) |
{ |
} |
/SPARTAN/trunk/arch/ia64/src/ia64.c |
---|
0,0 → 1,39 |
/* |
* Copyright (C) 2005 Jakub Jermar |
* 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 the author may not be used to endorse or promote products |
* derived from this software without specific prior written permission. |
* |
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``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 THE AUTHOR 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. |
*/ |
#include <arch.h> |
#include <arch/ski/ski.h> |
void arch_pre_mm_init(void) |
{ |
ski_init_console(); |
} |
void arch_post_mm_init(void) |
{ |
} |
/SPARTAN/trunk/arch/ia64/src/context.S |
---|
0,0 → 1,256 |
# |
# Copyright (C) 2005 Jakub Jermar |
# 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 the author may not be used to endorse or promote products |
# derived from this software without specific prior written permission. |
# |
# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``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 THE AUTHOR 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. |
# |
.text |
.global context_save |
.global context_restore |
context_save: |
alloc loc0 = ar.pfs, 1, 11, 0, 0 |
mov loc1 = ar.unat ;; |
/* loc2 */ |
mov loc3 = ar.rsc |
.auto |
/* |
* Flush dirty registers to backing store. |
* After this ar.bsp and ar.bspstore are equal. |
*/ |
flushrs |
mov loc4 = ar.bsp |
/* |
* Put RSE to enforced lazy mode. |
* So that ar.rnat can be read. |
*/ |
movl loc5 = ~3 |
and loc5 = loc3, loc5 |
mov ar.rsc = loc5 |
mov loc5 = ar.rnat |
.explicit |
mov loc6 = ar.lc |
mov loc7 = ar.ec |
mov loc8 = ar.ccv |
mov loc9 = ar.csd |
mov loc10 = ar.ssd |
/* |
* Save application registers |
*/ |
st8 [in0] = loc0, 8 ;; /* save ar.pfs */ |
st8 [in0] = loc1, 8 ;; /* save ar.unat (caller) */ |
mov loc2 = in0 ;; |
add in0 = 8, in0 ;; /* skip ar.unat (callee) */ |
st8 [in0] = loc3, 8 ;; /* save ar.rsc */ |
st8 [in0] = loc4, 8 ;; /* save ar.bsp */ |
st8 [in0] = loc5, 8 ;; /* save ar.rnat */ |
st8 [in0] = loc6, 8 ;; /* save ar.lc */ |
st8 [in0] = loc7, 8 ;; /* save ar.ec */ |
st8 [in0] = loc8, 8 ;; /* save ar.ccv */ |
st8 [in0] = loc9, 8 ;; /* save ar.csd */ |
st8 [in0] = loc10, 8 ;; /* save ar.ssd */ |
/* |
* Save general registers including NaT bits |
*/ |
st8.spill [in0] = r1, 8 ;; |
st8.spill [in0] = r2, 8 ;; |
st8.spill [in0] = r3, 8 ;; |
st8.spill [in0] = r4, 8 ;; |
st8.spill [in0] = r5, 8 ;; |
st8.spill [in0] = r6, 8 ;; |
st8.spill [in0] = r7, 8 ;; |
st8.spill [in0] = r8, 8 ;; |
st8.spill [in0] = r9, 8 ;; |
st8.spill [in0] = r10, 8 ;; |
st8.spill [in0] = r11, 8 ;; |
st8.spill [in0] = r12, 8 ;; /* save sp */ |
st8.spill [in0] = r13, 8 ;; |
st8.spill [in0] = r14, 8 ;; |
st8.spill [in0] = r15, 8 ;; |
st8.spill [in0] = r16, 8 ;; |
st8.spill [in0] = r17, 8 ;; |
st8.spill [in0] = r18, 8 ;; |
st8.spill [in0] = r19, 8 ;; |
st8.spill [in0] = r20, 8 ;; |
st8.spill [in0] = r21, 8 ;; |
st8.spill [in0] = r22, 8 ;; |
st8.spill [in0] = r23, 8 ;; |
st8.spill [in0] = r24, 8 ;; |
st8.spill [in0] = r25, 8 ;; |
st8.spill [in0] = r26, 8 ;; |
st8.spill [in0] = r27, 8 ;; |
st8.spill [in0] = r28, 8 ;; |
st8.spill [in0] = r29, 8 ;; |
st8.spill [in0] = r30, 8 ;; |
st8.spill [in0] = r31, 8 ;; |
mov loc3 = ar.unat ;; |
st8 [loc2] = loc3 /* save ar.unat (callee) */ |
/* |
* Save branch registers |
*/ |
mov loc2 = b0 ;; |
st8 [in0] = loc2, 8 /* save pc */ |
mov loc3 = b1 ;; |
st8 [in0] = loc3, 8 |
mov loc4 = b2 ;; |
st8 [in0] = loc4, 8 |
mov loc5 = b3 ;; |
st8 [in0] = loc5, 8 |
mov loc6 = b4 ;; |
st8 [in0] = loc6, 8 |
mov loc7 = b5 ;; |
st8 [in0] = loc7, 8 |
mov loc8 = b6 ;; |
st8 [in0] = loc8, 8 |
mov loc9 = b7 ;; |
st8 [in0] = loc9, 8 |
/* |
* Save predicate registers |
*/ |
mov loc2 = pr ;; |
st8 [in0] = loc2, 8 |
mov ar.pfs = loc0 |
mov ar.unat = loc1 |
add r8 = r0, r0, 1 /* context_save returns 1 */ |
br.ret.sptk.many b0 |
context_restore: |
alloc loc0 = ar.pfs, 1, 11, 0, 0 ;; |
ld8 loc0 = [in0], 8 ;; /* load ar.pfs */ |
ld8 loc1 = [in0], 8 ;; /* load ar.unat (caller) */ |
ld8 loc2 = [in0], 8 ;; /* load ar.unat (callee) */ |
ld8 loc3 = [in0], 8 ;; /* load ar.rsc */ |
ld8 loc4 = [in0], 8 ;; /* load ar.bsp */ |
ld8 loc5 = [in0], 8 ;; /* load ar.rnat */ |
ld8 loc6 = [in0], 8 ;; /* load ar.lc */ |
ld8 loc7 = [in0], 8 ;; /* load ar.ec */ |
ld8 loc8 = [in0], 8 ;; /* load ar.ccv */ |
ld8 loc9 = [in0], 8 ;; /* load ar.csd */ |
ld8 loc10 = [in0], 8 ;; /* load ar.ssd */ |
.auto |
/* |
* Invalidate the ALAT |
*/ |
invala |
/* |
* Restore application registers |
*/ |
mov ar.bspstore = loc4 |
mov ar.rnat = loc5 |
mov ar.pfs = loc0 |
mov ar.rsc = loc3 |
.explicit |
mov ar.unat = loc2 ;; |
mov ar.lc = loc6 |
mov ar.ec = loc7 |
mov ar.ccv = loc8 |
mov ar.csd = loc9 |
mov ar.ssd = loc10 |
/* |
* Restore general registers including NaT bits |
*/ |
ld8.fill r1 = [in0], 8 ;; |
ld8.fill r2 = [in0], 8 ;; |
ld8.fill r3 = [in0], 8 ;; |
ld8.fill r4 = [in0], 8 ;; |
ld8.fill r5 = [in0], 8 ;; |
ld8.fill r6 = [in0], 8 ;; |
ld8.fill r7 = [in0], 8 ;; |
ld8.fill r8 = [in0], 8 ;; |
ld8.fill r9 = [in0], 8 ;; |
ld8.fill r10 = [in0], 8 ;; |
ld8.fill r11 = [in0], 8 ;; |
ld8.fill r12 = [in0], 8 ;; /* restore sp */ |
ld8.fill r13 = [in0], 8 ;; |
ld8.fill r14 = [in0], 8 ;; |
ld8.fill r15 = [in0], 8 ;; |
ld8.fill r16 = [in0], 8 ;; |
ld8.fill r17 = [in0], 8 ;; |
ld8.fill r18 = [in0], 8 ;; |
ld8.fill r19 = [in0], 8 ;; |
ld8.fill r20 = [in0], 8 ;; |
ld8.fill r21 = [in0], 8 ;; |
ld8.fill r22 = [in0], 8 ;; |
ld8.fill r23 = [in0], 8 ;; |
ld8.fill r24 = [in0], 8 ;; |
ld8.fill r25 = [in0], 8 ;; |
ld8.fill r26 = [in0], 8 ;; |
ld8.fill r27 = [in0], 8 ;; |
ld8.fill r28 = [in0], 8 ;; |
ld8.fill r29 = [in0], 8 ;; |
ld8.fill r30 = [in0], 8 ;; |
ld8.fill r31 = [in0], 8 ;; |
/* |
* Restore branch registers |
*/ |
ld8 loc2 = [in0], 8 ;; /* restore pc */ |
mov b0 = loc2 |
ld8 loc3 = [in0], 8 ;; |
mov b1 = loc3 |
ld8 loc4 = [in0], 8 ;; |
mov b2 = loc4 |
ld8 loc5 = [in0], 8 ;; |
mov b3 = loc5 |
ld8 loc6 = [in0], 8 ;; |
mov b4 = loc6 |
ld8 loc7 = [in0], 8 ;; |
mov b5 = loc7 |
ld8 loc8 = [in0], 8 ;; |
mov b6 = loc8 |
ld8 loc9 = [in0], 8 ;; |
mov b7 = loc9 |
/* |
* Restore predicate registers |
*/ |
ld8 loc2 = [in0], 8 ;; |
mov pr = loc2, ~0 |
mov ar.unat = loc1 |
mov r8 = r0 /* context_restore returns 0 */ |
br.ret.sptk.many b0 |
/SPARTAN/trunk/arch/ia64/src/ski/ski.c |
---|
0,0 → 1,66 |
/* |
* Copyright (C) 2005 Jakub Jermar |
* 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 the author may not be used to endorse or promote products |
* derived from this software without specific prior written permission. |
* |
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``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 THE AUTHOR 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. |
*/ |
#include <arch/ski/ski.h> |
/** Initialize debug console |
* |
* Issue SSC (Simulator System Call) to |
* to open debug console. |
*/ |
void ski_init_console(void) |
{ |
__asm__ ( |
"mov r15=%0\n" |
"break 0x80000\n" |
: |
: "i" (SKI_INIT_CONSOLE) |
: "r15", "r8" |
); |
} |
/** Display character on debug console |
* |
* Use SSC (Simulator System Call) to |
* display character on debug console. |
* |
* @param ch Character to be printed. |
*/ |
void ski_putchar(const char ch) |
{ |
__asm__ ( |
"mov r15=%0\n" |
"mov r32=%1\n" /* r32 is in0 */ |
"break 0x80000\n" /* modifies r8 */ |
: |
: "i" (SKI_PUTCHAR), "r" (ch) |
: "r15", "in0", "r8" |
); |
if (ch == '\n') ski_putchar('\r'); |
} |
/SPARTAN/trunk/arch/ia64/src/putchar.c |
---|
0,0 → 1,35 |
/* |
* Copyright (C) 2005 Jakub Jermar |
* 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 the author may not be used to endorse or promote products |
* derived from this software without specific prior written permission. |
* |
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``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 THE AUTHOR 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. |
*/ |
#include <putchar.h> |
#include <arch/ski/ski.h> |
void putchar(const char ch) |
{ |
ski_putchar(ch); |
} |