From owner-p4-projects@FreeBSD.ORG Tue Oct 30 16:11:10 2012 Return-Path: Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id 6DB20D96; Tue, 30 Oct 2012 16:11:10 +0000 (UTC) Delivered-To: perforce@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52]) by hub.freebsd.org (Postfix) with ESMTP id 2D0E7D94 for ; Tue, 30 Oct 2012 16:11:10 +0000 (UTC) (envelope-from brooks@freebsd.org) Received: from skunkworks.freebsd.org (skunkworks.freebsd.org [IPv6:2001:4f8:fff6::2d]) by mx1.freebsd.org (Postfix) with ESMTP id 12C2A8FC0C for ; Tue, 30 Oct 2012 16:11:10 +0000 (UTC) Received: from skunkworks.freebsd.org (localhost [127.0.0.1]) by skunkworks.freebsd.org (8.14.4/8.14.4) with ESMTP id q9UGB9uI094100 for ; Tue, 30 Oct 2012 16:11:09 GMT (envelope-from brooks@freebsd.org) Received: (from perforce@localhost) by skunkworks.freebsd.org (8.14.4/8.14.4/Submit) id q9UGB9U1094097 for perforce@freebsd.org; Tue, 30 Oct 2012 16:11:09 GMT (envelope-from brooks@freebsd.org) Date: Tue, 30 Oct 2012 16:11:09 GMT Message-Id: <201210301611.q9UGB9U1094097@skunkworks.freebsd.org> X-Authentication-Warning: skunkworks.freebsd.org: perforce set sender to brooks@freebsd.org using -f From: Brooks Davis Subject: PERFORCE change 219345 for review To: Perforce Change Reviews Precedence: bulk X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.14 List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 30 Oct 2012 16:11:10 -0000 http://p4web.freebsd.org/@@219345?ac=10 Change 219345 by brooks@brooks_zenith on 2012/10/30 16:10:13 Checkpoint a split of pngsb into an image reading library and and program. Affected files ... .. //depot/projects/ctsrd/beribsd/src/ctsrd-lib/Makefile#5 edit .. //depot/projects/ctsrd/beribsd/src/ctsrd-lib/libimagebox/Makefile#1 add .. //depot/projects/ctsrd/beribsd/src/ctsrd-lib/libimagebox/imagebox.h#1 add .. //depot/projects/ctsrd/beribsd/src/ctsrd-lib/libimagebox/pngbox.c#1 add .. //depot/projects/ctsrd/beribsd/src/ctsrd/pngsb/Makefile#3 edit .. //depot/projects/ctsrd/beribsd/src/ctsrd/pngsb/pngsb.c#3 edit Differences ... ==== //depot/projects/ctsrd/beribsd/src/ctsrd-lib/Makefile#5 (text+ko) ==== @@ -4,6 +4,7 @@ .include SUBDIR= libde4tc \ + libimagebox \ libvuln_magic \ libvuln_png ==== //depot/projects/ctsrd/beribsd/src/ctsrd/pngsb/Makefile#3 (text+ko) ==== @@ -4,8 +4,9 @@ WARNS= 6 -CFLAGS+= -I${.CURDIR}/../../ctsrd-lib/libvuln_png/ -LDFLAGS+= -L/usr/local/lib -LDADD+= -lpthread -lvuln_png -lz -lm +CFLAGS+= -I${.CURDIR}/../../ctsrd-lib/libimagebox/ \ + -I${.CURDIR}/../../ctsrd-lib/libvuln_png/ +#LDFLAGS+= -L/usr/local/lib +LDADD+= -lpthread -lde4tc -limagebox -lvuln_png -lz -lm .include ==== //depot/projects/ctsrd/beribsd/src/ctsrd/pngsb/pngsb.c#3 (text+ko) ==== @@ -32,9 +32,11 @@ #include +#include #include #include #include +#include #include #include #include @@ -42,6 +44,7 @@ #include #include +#if 0 static void read_row_callback(png_structp, png_uint_32, int); static void read_png_from_fd(png_structp, png_bytep, png_size_t); @@ -131,6 +134,8 @@ png_get_IHDR(png_ptr, info_ptr, &width, &height, &bit_depth, &color_type, &interlace_type, NULL, NULL); + printf("bit_depth = %d, color_type = %d\n", bit_depth, color_type); + if (width != pds->ps->width || height != pds->ps->height) { png_destroy_read_struct(&png_ptr, &info_ptr, &end_info); pds->ps->error = 1; @@ -139,9 +144,11 @@ pthread_exit(NULL); } - png_set_filler(png_ptr, 0, 0); png_set_gray_to_rgb(png_ptr); + png_set_bgr(png_ptr); + png_set_filler(png_ptr, 0, PNG_FILLER_AFTER); pds->ps->passes_remaining = png_set_interlace_handling(png_ptr); + png_read_update_info(png_ptr, info_ptr); if ((rows = malloc(height*sizeof(png_bytep))) == NULL) png_error(png_ptr, "failed to malloc row array"); @@ -266,6 +273,7 @@ free(__DEVOLATILE(void*, ps->buffer)); free(ps); } +#endif static void usage(void) @@ -273,6 +281,7 @@ errx(1, "usage: pngsb "); } +#if 0 static void read_row_callback(png_structp png_ptr, png_uint_32 row, int pass __unused) { @@ -296,36 +305,59 @@ if (rlen < 0 || (png_size_t)rlen != length) png_error(png_ptr, "read error"); } +#endif int main(int argc, char **argv) { int pfd; - uint32_t last_row = -1; - struct pngstate *ps; + uint32_t i, last_row = 0; + struct iboxstate *ps; if (argc != 2) usage(); + fb_init(); + if ((pfd = open(argv[1], O_RDONLY)) < -1) err(1, "open(%s)", argv[1]); - if ((ps = png_read_start(pfd, 800, 480)) == NULL) + if ((ps = png_read_start(pfd, 800, 480, SB_NONE)) == NULL) err(1, "failed to initialize read of %s", argv[1]); /* XXX: do something with the valid parts of the image as it decodes. */ - while(ps->valid_rows < ps->height) { + while(ps->valid_rows < ps->height ) { if (last_row != ps->valid_rows) { + for (i = last_row; i < ps->valid_rows; i++) + memcpy(__DEVOLATILE(void*, + pfbp + (i * fb_width)), + __DEVOLATILE(void *, + ps->buffer + (i * ps->width)), + sizeof(uint32_t) * ps->width); last_row = ps->valid_rows; printf("valid_rows = %d\n", ps->valid_rows); } +#if 0 + pthread_yield(); +#endif + } + if (last_row != ps->valid_rows) { + for (i = last_row; i < ps->valid_rows; i++) + memcpy(__DEVOLATILE(void*, + pfbp + (i * fb_width)), + __DEVOLATILE(void *, + ps->buffer + (i * ps->width)), + sizeof(uint32_t) * ps->width); + last_row = ps->valid_rows; } printf("valid_rows = %d\n", ps->valid_rows); if (png_read_finish(ps) != 0) errx(1, "png_read_finish failed"); - pngstate_free(ps); + iboxstate_free(ps); + + fb_fini(); return(0); } From owner-p4-projects@FreeBSD.ORG Tue Oct 30 22:29:02 2012 Return-Path: Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id 23C39ED9; Tue, 30 Oct 2012 22:29:02 +0000 (UTC) Delivered-To: perforce@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52]) by hub.freebsd.org (Postfix) with ESMTP id CF69AED7 for ; Tue, 30 Oct 2012 22:29:01 +0000 (UTC) (envelope-from bb+lists.freebsd.perforce@cyrus.watson.org) Received: from skunkworks.freebsd.org (skunkworks.freebsd.org [IPv6:2001:4f8:fff6::2d]) by mx1.freebsd.org (Postfix) with ESMTP id B3B3A8FC0C for ; Tue, 30 Oct 2012 22:29:01 +0000 (UTC) Received: from skunkworks.freebsd.org (localhost [127.0.0.1]) by skunkworks.freebsd.org (8.14.4/8.14.4) with ESMTP id q9UMT1f8014650 for ; Tue, 30 Oct 2012 22:29:01 GMT (envelope-from bb+lists.freebsd.perforce@cyrus.watson.org) Received: (from perforce@localhost) by skunkworks.freebsd.org (8.14.4/8.14.4/Submit) id q9UMT1QN014646 for perforce@freebsd.org; Tue, 30 Oct 2012 22:29:01 GMT (envelope-from bb+lists.freebsd.perforce@cyrus.watson.org) Date: Tue, 30 Oct 2012 22:29:01 GMT Message-Id: <201210302229.q9UMT1QN014646@skunkworks.freebsd.org> X-Authentication-Warning: skunkworks.freebsd.org: perforce set sender to bb+lists.freebsd.perforce@cyrus.watson.org using -f From: Robert Watson Subject: PERFORCE change 219360 for review To: Perforce Change Reviews Precedence: bulk X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.14 List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 30 Oct 2012 22:29:02 -0000 http://p4web.freebsd.org/@@219360?ac=10 Change 219360 by rwatson@rwatson_svr_ctsrd_mipsbuild on 2012/10/30 22:28:41 Teach CheriBSD's DDB "show cheri" command to print out capability coprocessor exception cause information, which arrived in CHERI ISAv2. Affected files ... .. //depot/projects/ctsrd/cheribsd/src/sys/mips/cheri/cheri.c#3 edit Differences ... ==== //depot/projects/ctsrd/cheribsd/src/sys/mips/cheri/cheri.c#3 (text+ko) ==== @@ -259,6 +259,7 @@ */ DB_SHOW_COMMAND(cheri, ddb_dump_cheri) { + register_t cause; db_printf("CHERI registers\n"); DB_CHERI_REG_PRINT(0); @@ -293,6 +294,9 @@ DB_CHERI_REG_PRINT(29); DB_CHERI_REG_PRINT(30); DB_CHERI_REG_PRINT(31); + CHERI_CGETCAUSE(cause); + db_printf("CHERI cause: ExcCode: %02x RegNum: %02x\n", + (uint8_t)((cause >> 8) & 0xff), (uint8_t)(cause & 0x1f)); } /* From owner-p4-projects@FreeBSD.ORG Wed Oct 31 21:59:08 2012 Return-Path: Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id C7CB3E36; Wed, 31 Oct 2012 21:59:08 +0000 (UTC) Delivered-To: perforce@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52]) by hub.freebsd.org (Postfix) with ESMTP id 67357E34 for ; Wed, 31 Oct 2012 21:59:08 +0000 (UTC) (envelope-from bb+lists.freebsd.perforce@cyrus.watson.org) Received: from skunkworks.freebsd.org (skunkworks.freebsd.org [IPv6:2001:4f8:fff6::2d]) by mx1.freebsd.org (Postfix) with ESMTP id 475388FC08 for ; Wed, 31 Oct 2012 21:59:08 +0000 (UTC) Received: from skunkworks.freebsd.org (localhost [127.0.0.1]) by skunkworks.freebsd.org (8.14.4/8.14.4) with ESMTP id q9VLx8aC085788 for ; Wed, 31 Oct 2012 21:59:08 GMT (envelope-from bb+lists.freebsd.perforce@cyrus.watson.org) Received: (from perforce@localhost) by skunkworks.freebsd.org (8.14.4/8.14.4/Submit) id q9VLx7iO085783 for perforce@freebsd.org; Wed, 31 Oct 2012 21:59:07 GMT (envelope-from bb+lists.freebsd.perforce@cyrus.watson.org) Date: Wed, 31 Oct 2012 21:59:07 GMT Message-Id: <201210312159.q9VLx7iO085783@skunkworks.freebsd.org> X-Authentication-Warning: skunkworks.freebsd.org: perforce set sender to bb+lists.freebsd.perforce@cyrus.watson.org using -f From: Robert Watson Subject: PERFORCE change 219407 for review To: Perforce Change Reviews Precedence: bulk X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.14 List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 31 Oct 2012 21:59:09 -0000 http://p4web.freebsd.org/@@219407?ac=10 Change 219407 by rwatson@rwatson_svr_ctsrd_mipsbuild on 2012/10/31 21:58:36 Use CHERI ISAv2 clc/csc instruction immediate operands more conservatively, as current use exceeds the signed 11-bit space that is available. This requires re-introducing an explicit temporary register and a manual addition -- however, at least it's not two as before. The kernel now boots several hundred instructions into userspace, rather than dying during the first userspace instruction fetch due to installing an incorrect EPCC in CP2. Affected files ... .. //depot/projects/ctsrd/cheribsd/src/sys/mips/include/cheriasm.h#9 edit .. //depot/projects/ctsrd/cheribsd/src/sys/mips/mips/exception.S#11 edit .. //depot/projects/ctsrd/cheribsd/src/sys/mips/mips/swtch.S#10 edit Differences ... ==== //depot/projects/ctsrd/cheribsd/src/sys/mips/include/cheriasm.h#9 (text+ko) ==== @@ -86,11 +86,13 @@ * manage $c0. */ #define SZCAP 32 -#define SAVE_U_PCB_CHERIREG(creg, offs, base) \ - csc creg, base, (U_PCB_CHERIFRAME + (SZCAP * offs))($c30) +#define SAVE_U_PCB_CHERIREG(creg, offs, base, treg) \ + PTR_ADDIU treg, base, U_PCB_CHERIFRAME; \ + csc creg, treg, (SZCAP * offs)($c30) -#define RESTORE_U_PCB_CHERIREG(creg, offs, base) \ - clc creg, base, (U_PCB_CHERIFRAME + (SZCAP * offs))($c30) +#define RESTORE_U_PCB_CHERIREG(creg, offs, base, treg) \ + PTR_ADDIU treg, base, U_PCB_CHERIFRAME; \ + clc creg, treg, (SZCAP * offs)($c30) /* * XXXRW: Update once the assembler supports reserved CHERI register names to @@ -102,62 +104,62 @@ * * XXXRW: Note hard-coding of UDC here. */ -#define SAVE_CHERI_CONTEXT(base) \ - SAVE_U_PCB_CHERIREG($c25, CHERI_CR_C0_OFF, base); \ - SAVE_U_PCB_CHERIREG($c1, CHERI_CR_C1_OFF, base); \ - SAVE_U_PCB_CHERIREG($c2, CHERI_CR_C2_OFF, base); \ - SAVE_U_PCB_CHERIREG($c3, CHERI_CR_C3_OFF, base); \ - SAVE_U_PCB_CHERIREG($c4, CHERI_CR_C4_OFF, base); \ - SAVE_U_PCB_CHERIREG($c5, CHERI_CR_C5_OFF, base); \ - SAVE_U_PCB_CHERIREG($c6, CHERI_CR_C6_OFF, base); \ - SAVE_U_PCB_CHERIREG($c7, CHERI_CR_C7_OFF, base); \ - SAVE_U_PCB_CHERIREG($c8, CHERI_CR_C8_OFF, base); \ - SAVE_U_PCB_CHERIREG($c9, CHERI_CR_C9_OFF, base); \ - SAVE_U_PCB_CHERIREG($c10, CHERI_CR_C10_OFF, base); \ - SAVE_U_PCB_CHERIREG($c11, CHERI_CR_C11_OFF, base); \ - SAVE_U_PCB_CHERIREG($c12, CHERI_CR_C12_OFF, base); \ - SAVE_U_PCB_CHERIREG($c13, CHERI_CR_C13_OFF, base); \ - SAVE_U_PCB_CHERIREG($c14, CHERI_CR_C14_OFF, base); \ - SAVE_U_PCB_CHERIREG($c15, CHERI_CR_C15_OFF, base); \ - SAVE_U_PCB_CHERIREG($c16, CHERI_CR_C16_OFF, base); \ - SAVE_U_PCB_CHERIREG($c17, CHERI_CR_C17_OFF, base); \ - SAVE_U_PCB_CHERIREG($c18, CHERI_CR_C18_OFF, base); \ - SAVE_U_PCB_CHERIREG($c19, CHERI_CR_C19_OFF, base); \ - SAVE_U_PCB_CHERIREG($c20, CHERI_CR_C20_OFF, base); \ - SAVE_U_PCB_CHERIREG($c21, CHERI_CR_C21_OFF, base); \ - SAVE_U_PCB_CHERIREG($c22, CHERI_CR_C22_OFF, base); \ - SAVE_U_PCB_CHERIREG($c23, CHERI_CR_C23_OFF, base); \ - SAVE_U_PCB_CHERIREG($c24, CHERI_CR_C24_OFF, base); \ - SAVE_U_PCB_CHERIREG($c26, CHERI_CR_C26_OFF, base); \ - SAVE_U_PCB_CHERIREG($c31, CHERI_CR_PCC_OFF, base) +#define SAVE_CHERI_CONTEXT(base, treg) \ + SAVE_U_PCB_CHERIREG($c25, CHERI_CR_C0_OFF, base, treg); \ + SAVE_U_PCB_CHERIREG($c1, CHERI_CR_C1_OFF, base, treg); \ + SAVE_U_PCB_CHERIREG($c2, CHERI_CR_C2_OFF, base, treg); \ + SAVE_U_PCB_CHERIREG($c3, CHERI_CR_C3_OFF, base, treg); \ + SAVE_U_PCB_CHERIREG($c4, CHERI_CR_C4_OFF, base, treg); \ + SAVE_U_PCB_CHERIREG($c5, CHERI_CR_C5_OFF, base, treg); \ + SAVE_U_PCB_CHERIREG($c6, CHERI_CR_C6_OFF, base, treg); \ + SAVE_U_PCB_CHERIREG($c7, CHERI_CR_C7_OFF, base, treg); \ + SAVE_U_PCB_CHERIREG($c8, CHERI_CR_C8_OFF, base, treg); \ + SAVE_U_PCB_CHERIREG($c9, CHERI_CR_C9_OFF, base, treg); \ + SAVE_U_PCB_CHERIREG($c10, CHERI_CR_C10_OFF, base, treg); \ + SAVE_U_PCB_CHERIREG($c11, CHERI_CR_C11_OFF, base, treg); \ + SAVE_U_PCB_CHERIREG($c12, CHERI_CR_C12_OFF, base, treg); \ + SAVE_U_PCB_CHERIREG($c13, CHERI_CR_C13_OFF, base, treg); \ + SAVE_U_PCB_CHERIREG($c14, CHERI_CR_C14_OFF, base, treg); \ + SAVE_U_PCB_CHERIREG($c15, CHERI_CR_C15_OFF, base, treg); \ + SAVE_U_PCB_CHERIREG($c16, CHERI_CR_C16_OFF, base, treg); \ + SAVE_U_PCB_CHERIREG($c17, CHERI_CR_C17_OFF, base, treg); \ + SAVE_U_PCB_CHERIREG($c18, CHERI_CR_C18_OFF, base, treg); \ + SAVE_U_PCB_CHERIREG($c19, CHERI_CR_C19_OFF, base, treg); \ + SAVE_U_PCB_CHERIREG($c20, CHERI_CR_C20_OFF, base, treg); \ + SAVE_U_PCB_CHERIREG($c21, CHERI_CR_C21_OFF, base, treg); \ + SAVE_U_PCB_CHERIREG($c22, CHERI_CR_C22_OFF, base, treg); \ + SAVE_U_PCB_CHERIREG($c23, CHERI_CR_C23_OFF, base, treg); \ + SAVE_U_PCB_CHERIREG($c24, CHERI_CR_C24_OFF, base, treg); \ + SAVE_U_PCB_CHERIREG($c26, CHERI_CR_C26_OFF, base, treg); \ + SAVE_U_PCB_CHERIREG($c31, CHERI_CR_PCC_OFF, base, treg) -#define RESTORE_CHERI_CONTEXT(base) \ - RESTORE_U_PCB_CHERIREG($c25, CHERI_CR_C0_OFF, base); \ - RESTORE_U_PCB_CHERIREG($c1, CHERI_CR_C1_OFF, base); \ - RESTORE_U_PCB_CHERIREG($c2, CHERI_CR_C2_OFF, base); \ - RESTORE_U_PCB_CHERIREG($c3, CHERI_CR_C3_OFF, base); \ - RESTORE_U_PCB_CHERIREG($c4, CHERI_CR_C4_OFF, base); \ - RESTORE_U_PCB_CHERIREG($c5, CHERI_CR_C5_OFF, base); \ - RESTORE_U_PCB_CHERIREG($c6, CHERI_CR_C6_OFF, base); \ - RESTORE_U_PCB_CHERIREG($c7, CHERI_CR_C7_OFF, base); \ - RESTORE_U_PCB_CHERIREG($c8, CHERI_CR_C8_OFF, base); \ - RESTORE_U_PCB_CHERIREG($c9, CHERI_CR_C9_OFF, base); \ - RESTORE_U_PCB_CHERIREG($c10, CHERI_CR_C10_OFF, base); \ - RESTORE_U_PCB_CHERIREG($c11, CHERI_CR_C11_OFF, base); \ - RESTORE_U_PCB_CHERIREG($c12, CHERI_CR_C12_OFF, base); \ - RESTORE_U_PCB_CHERIREG($c13, CHERI_CR_C13_OFF, base); \ - RESTORE_U_PCB_CHERIREG($c14, CHERI_CR_C14_OFF, base); \ - RESTORE_U_PCB_CHERIREG($c15, CHERI_CR_C15_OFF, base); \ - RESTORE_U_PCB_CHERIREG($c16, CHERI_CR_C16_OFF, base); \ - RESTORE_U_PCB_CHERIREG($c17, CHERI_CR_C17_OFF, base); \ - RESTORE_U_PCB_CHERIREG($c18, CHERI_CR_C18_OFF, base); \ - RESTORE_U_PCB_CHERIREG($c19, CHERI_CR_C19_OFF, base); \ - RESTORE_U_PCB_CHERIREG($c20, CHERI_CR_C20_OFF, base); \ - RESTORE_U_PCB_CHERIREG($c21, CHERI_CR_C21_OFF, base); \ - RESTORE_U_PCB_CHERIREG($c22, CHERI_CR_C22_OFF, base); \ - RESTORE_U_PCB_CHERIREG($c23, CHERI_CR_C23_OFF, base); \ - RESTORE_U_PCB_CHERIREG($c24, CHERI_CR_C24_OFF, base); \ - RESTORE_U_PCB_CHERIREG($c26, CHERI_CR_C26_OFF, base); \ - RESTORE_U_PCB_CHERIREG($c31, CHERI_CR_PCC_OFF, base) +#define RESTORE_CHERI_CONTEXT(base, treg) \ + RESTORE_U_PCB_CHERIREG($c25, CHERI_CR_C0_OFF, base, treg); \ + RESTORE_U_PCB_CHERIREG($c1, CHERI_CR_C1_OFF, base, treg); \ + RESTORE_U_PCB_CHERIREG($c2, CHERI_CR_C2_OFF, base, treg); \ + RESTORE_U_PCB_CHERIREG($c3, CHERI_CR_C3_OFF, base, treg); \ + RESTORE_U_PCB_CHERIREG($c4, CHERI_CR_C4_OFF, base, treg); \ + RESTORE_U_PCB_CHERIREG($c5, CHERI_CR_C5_OFF, base, treg); \ + RESTORE_U_PCB_CHERIREG($c6, CHERI_CR_C6_OFF, base, treg); \ + RESTORE_U_PCB_CHERIREG($c7, CHERI_CR_C7_OFF, base, treg); \ + RESTORE_U_PCB_CHERIREG($c8, CHERI_CR_C8_OFF, base, treg); \ + RESTORE_U_PCB_CHERIREG($c9, CHERI_CR_C9_OFF, base, treg); \ + RESTORE_U_PCB_CHERIREG($c10, CHERI_CR_C10_OFF, base, treg); \ + RESTORE_U_PCB_CHERIREG($c11, CHERI_CR_C11_OFF, base, treg); \ + RESTORE_U_PCB_CHERIREG($c12, CHERI_CR_C12_OFF, base, treg); \ + RESTORE_U_PCB_CHERIREG($c13, CHERI_CR_C13_OFF, base, treg); \ + RESTORE_U_PCB_CHERIREG($c14, CHERI_CR_C14_OFF, base, treg); \ + RESTORE_U_PCB_CHERIREG($c15, CHERI_CR_C15_OFF, base, treg); \ + RESTORE_U_PCB_CHERIREG($c16, CHERI_CR_C16_OFF, base, treg); \ + RESTORE_U_PCB_CHERIREG($c17, CHERI_CR_C17_OFF, base, treg); \ + RESTORE_U_PCB_CHERIREG($c18, CHERI_CR_C18_OFF, base, treg); \ + RESTORE_U_PCB_CHERIREG($c19, CHERI_CR_C19_OFF, base, treg); \ + RESTORE_U_PCB_CHERIREG($c20, CHERI_CR_C20_OFF, base, treg); \ + RESTORE_U_PCB_CHERIREG($c21, CHERI_CR_C21_OFF, base, treg); \ + RESTORE_U_PCB_CHERIREG($c22, CHERI_CR_C22_OFF, base, treg); \ + RESTORE_U_PCB_CHERIREG($c23, CHERI_CR_C23_OFF, base, treg); \ + RESTORE_U_PCB_CHERIREG($c24, CHERI_CR_C24_OFF, base, treg); \ + RESTORE_U_PCB_CHERIREG($c26, CHERI_CR_C26_OFF, base, treg); \ + RESTORE_U_PCB_CHERIREG($c31, CHERI_CR_PCC_OFF, base, treg) #endif /* _MIPS_INCLUDE_CHERIASM_H_ */ ==== //depot/projects/ctsrd/cheribsd/src/sys/mips/mips/exception.S#11 (text+ko) ==== @@ -505,7 +505,7 @@ /* * Note: This saves EPCC, matching the explicit EPC save above. */ - SAVE_CHERI_CONTEXT(k1) + SAVE_CHERI_CONTEXT(k1, t0) #endif REG_S a3, CALLFRAME_RA(sp) # for debugging PTR_LA gp, _C_LABEL(_gp) # switch to kernel GP @@ -560,7 +560,7 @@ /* * Note: This restores EPCC, matching the explicit EPC restore below. */ - RESTORE_CHERI_CONTEXT(k1) + RESTORE_CHERI_CONTEXT(k1, t0) #endif RESTORE_U_PCB_REG(t0, MULLO, k1) RESTORE_U_PCB_REG(t1, MULHI, k1) @@ -786,7 +786,7 @@ /* * Note: This saves EPCC, matching the explicit EPC save above. */ - SAVE_CHERI_CONTEXT(k1) + SAVE_CHERI_CONTEXT(k1, t0) #endif PTR_SUBU sp, k1, CALLFRAME_SIZ # switch to kernel SP PTR_LA gp, _C_LABEL(_gp) # switch to kernel GP @@ -850,7 +850,7 @@ /* * Note: This restores EPCC, matching the explicit EPC restore below. */ - RESTORE_CHERI_CONTEXT(k1) + RESTORE_CHERI_CONTEXT(k1, t0) #endif RESTORE_U_PCB_REG(s0, S0, k1) RESTORE_U_PCB_REG(s1, S1, k1) ==== //depot/projects/ctsrd/cheribsd/src/sys/mips/mips/swtch.S#10 (text+ko) ==== @@ -124,7 +124,7 @@ /* * Note: This restores EPCC, matching the explicit EPC restore below. */ - RESTORE_CHERI_CONTEXT(k1) + RESTORE_CHERI_CONTEXT(k1, t0) #endif RESTORE_U_PCB_REG(t0, MULLO, k1) RESTORE_U_PCB_REG(t1, MULHI, k1)