Compare commits
5 Commits
clang-arm-
...
clang-arm
| Author | SHA1 | Date | |
|---|---|---|---|
| 422c160db1 | |||
| b74ac99bbb | |||
| d86a290588 | |||
| fddf1f133e | |||
| ae34580f0c |
@@ -1,9 +0,0 @@
|
||||
#
|
||||
# Sorted using sort_set.pl in releasetools.
|
||||
# to add an entry simply add it at the end of the
|
||||
# file and run
|
||||
# ../../../../releasetools/sort_set.pl < mi > out
|
||||
# mv out mi
|
||||
#
|
||||
./usr/tests/minix-posix/test_arm_segfault minix-tests
|
||||
./usr/tests/minix-posix/test_arm_unaligned minix-tests
|
||||
@@ -53,7 +53,7 @@
|
||||
K(GRAVE_ACCENT) = { '\'', '"', A('\''),A('\''),A('"'), C('@') },
|
||||
K(COMMA) = { ',', '<', A(','), A(','), A('<'), C('@') },
|
||||
K(PERIOD) = { '.', '>', A('.'), A('.'), A('>'), C('@') },
|
||||
K(SLASH) = { ';', ':', A(';'), A(';'), A(':'), C('@') },
|
||||
K(SLASH) = { 59, 58, A(59), A(58), A(59), C('@') },
|
||||
K(CAPS_LOCK) = { CALOCK, CALOCK, CALOCK, CALOCK, CALOCK, CALOCK },
|
||||
K(F1) = { F1, SF1, AF1, AF1, ASF1, CF1 },
|
||||
K(F2) = { F2, SF2, AF2, AF2, ASF2, CF2 },
|
||||
@@ -94,11 +94,10 @@
|
||||
K(KP_8) = { NUP, '8', AUP, AUP, A('8'), CUP },
|
||||
K(KP_9) = { NPGUP, '9', APGUP, APGUP, A('9'), CPGUP },
|
||||
K(KP_0) = { NINSRT, '0', AINSRT, AINSRT, A('0'), CINSRT },
|
||||
K(KP_PERIOD) = { NDEL, ',', A(DEL), A(DEL), A(','), DEL },
|
||||
K(KP_PERIOD) = { NDEL, '.', A(DEL), A(DEL), A('.'), DEL },
|
||||
K(EUROPE_2) = { '\\', '|', A('\\'),A('|'), A('\\'),C('@') },
|
||||
K(APPLICATION) = { C('M'), C('M'), CA('M'),CA('M'),CA('M'),C('J') },
|
||||
K(I10L_1) = { '/', '?', A('/'), A('/'), A('?'), C('@') },
|
||||
K(EQUAL_SIGN) = { '.', '.', 0, 0, 0, 0 },
|
||||
K(KP_EQUAL) = { '?', 0, 0, 0, 0, 0 },
|
||||
K(SYSREQ) = { C('M'), C('M'), CA('M'),CA('M'),CA('M'),C('J') },
|
||||
K(LEFT_CTRL) = { LCTRL, LCTRL, LCTRL, LCTRL, LCTRL, LCTRL },
|
||||
K(LEFT_SHIFT) = { LSHIFT, LSHIFT, LSHIFT, LSHIFT, LSHIFT, LSHIFT },
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
#include "fs.h"
|
||||
#include "inode.h"
|
||||
#include "clean.h"
|
||||
#include <assert.h>
|
||||
|
||||
/*===========================================================================*
|
||||
* fs_sync *
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
#include "fs.h"
|
||||
#include <string.h>
|
||||
#include <assert.h>
|
||||
#include <sys/stat.h>
|
||||
#include <sys/statvfs.h>
|
||||
#include "inode.h"
|
||||
|
||||
@@ -109,36 +109,6 @@ static void pagefault( struct proc *pr,
|
||||
return;
|
||||
}
|
||||
|
||||
static void
|
||||
data_abort(int is_nested, struct proc *pr, reg_t *saved_lr,
|
||||
struct ex_s *ep, u32_t dfar, u32_t dfsr)
|
||||
{
|
||||
/* Extract fault status bit [0:3, 10] from DFSR */
|
||||
u32_t fs = dfsr & 0x0F;
|
||||
fs |= ((dfsr >> 6) & 0x10);
|
||||
|
||||
/* Translation and permission faults are handled as pagefaults. */
|
||||
if (is_trans_fault(fs) || is_perm_fault(fs)) {
|
||||
pagefault(pr, saved_lr, is_nested, dfar, dfsr);
|
||||
} else if (!is_nested) {
|
||||
/* A user process caused some other kind of data abort. */
|
||||
int signum = SIGSEGV;
|
||||
|
||||
if (is_align_fault(fs)) {
|
||||
signum = SIGBUS;
|
||||
} else {
|
||||
printf("KERNEL: unknown data abort by proc %d sending "
|
||||
"SIGSEGV (dfar=0x%lx dfsr=0x%lx fs=0x%lx)\n",
|
||||
proc_nr(pr), dfar, dfsr, fs);
|
||||
}
|
||||
cause_sig(proc_nr(pr), signum);
|
||||
} else { /* is_nested */
|
||||
printf("KERNEL: inkernel data abort - disaster (dfar=0x%lx "
|
||||
"dfsr=0x%lx fs=0x%lx)\n", dfar, dfsr, fs);
|
||||
inkernel_disaster(pr, saved_lr, ep, is_nested);
|
||||
}
|
||||
}
|
||||
|
||||
static void inkernel_disaster(struct proc *saved_proc,
|
||||
reg_t *saved_lr, struct ex_s *ep,
|
||||
int is_nested)
|
||||
@@ -201,7 +171,7 @@ void exception_handler(int is_nested, reg_t *saved_lr, int vector)
|
||||
}
|
||||
|
||||
if (vector == DATA_ABORT_VECTOR) {
|
||||
data_abort(is_nested, saved_proc, saved_lr, ep, read_dfar(), read_dfsr());
|
||||
pagefault(saved_proc, saved_lr, is_nested, read_dfar(), read_dfsr());
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
@@ -21,16 +21,6 @@
|
||||
#define INTERRUPT_VECTOR 6
|
||||
#define FAST_INTERRUPT_VECTOR 7
|
||||
|
||||
/* Data abort helper */
|
||||
#define is_align_fault(fault_status) \
|
||||
((fault_status) == FAULT_ALIGN_0)
|
||||
|
||||
#define is_trans_fault(fault_status) \
|
||||
(((fault_status) == FAULT_TRANS_S) || ((fault_status) == FAULT_TRANS_P))
|
||||
|
||||
#define is_perm_fault(fault_status) \
|
||||
(((fault_status) == FAULT_PERM_S) || ((fault_status) == FAULT_PERM_P))
|
||||
|
||||
/*
|
||||
* defines how many bytes are reserved at the top of the kernel stack for global
|
||||
* information like currently scheduled process or current cpu id
|
||||
|
||||
@@ -876,6 +876,11 @@ When exiting MINIX running under DOS the Boot Monitor's
|
||||
.B exit
|
||||
command will return you to the DOS prompt. The Boot Monitor and MINIX
|
||||
are together just a pretty big DOS program as far DOS is concerned.
|
||||
.SH FILES
|
||||
.TP 12
|
||||
.B /usr/ast
|
||||
Honorary home directory of Andrew S. Tanenbaum. Doubles as the place where
|
||||
the default setup for a new user is found.
|
||||
.SH "SEE ALSO"
|
||||
.BR dosminix (8),
|
||||
.BR monitor (8),
|
||||
|
||||
@@ -13,6 +13,7 @@
|
||||
#include <minix/callnr.h>
|
||||
#include <minix/com.h>
|
||||
#include <minix/ds.h>
|
||||
#include <minix/type.h>
|
||||
#include <minix/endpoint.h>
|
||||
#include <minix/minlib.h>
|
||||
#include <minix/type.h>
|
||||
|
||||
@@ -126,8 +126,6 @@ PROGS+= test63 mod
|
||||
OBJS.${o} += common.o
|
||||
.endfor
|
||||
|
||||
.include "./arch/${MACHINE_ARCH}/Makefile.inc"
|
||||
|
||||
# LSC Make sure there is not leftover after a failed testrun
|
||||
clean: .PHONY .MAKE
|
||||
@rm -rf DIR*
|
||||
|
||||
@@ -1,7 +0,0 @@
|
||||
PROGS+= test_arm_segfault
|
||||
PROGS+= test_arm_unaligned
|
||||
|
||||
.PATH: ${.CURDIR}/arch/${MACHINE_ARCH}
|
||||
|
||||
test_arm_segfault.o : test_arm_segfault.S
|
||||
test_arm_unaligned.o : test_arm_unaligned.S
|
||||
@@ -1,16 +0,0 @@
|
||||
.text
|
||||
.global main
|
||||
main:
|
||||
push {lr}
|
||||
ldr r0, =0xDEADBEE0 /* Hopefully this is not mapped... */
|
||||
ldr r1, [r0]
|
||||
ldr r0, =0x01010100 /* In case we survived, try something else */
|
||||
ldr r1, [r0]
|
||||
|
||||
ldr r0, =msg
|
||||
bl puts
|
||||
|
||||
mov r0, #0 /* test should check for non-zero exit code / signal */
|
||||
pop {pc}
|
||||
msg:
|
||||
.ascii "ERROR - caused no segfault\n"
|
||||
@@ -1,26 +0,0 @@
|
||||
.text
|
||||
.global main
|
||||
main:
|
||||
push {lr}
|
||||
mov r0, sp
|
||||
|
||||
/* This should work */
|
||||
ldr r0, [sp]
|
||||
|
||||
/* Unalign it */
|
||||
add r0, #2
|
||||
|
||||
/* Try a non-word aligned word-load, this may work if SCTRL.A == 0 */
|
||||
ldr r1, [r0]
|
||||
|
||||
/* Load non-word aligned dword, should die even with SCTRL.A == 0 */
|
||||
ldrd r2, r3, [r0]
|
||||
|
||||
|
||||
ldr r0, =msg
|
||||
bl puts
|
||||
|
||||
mov r0, #0 /* test should check for non-zero exit code / signal */
|
||||
pop {pc}
|
||||
msg:
|
||||
.ascii "ERROR - caused no sigbus\n"
|
||||
@@ -264,7 +264,7 @@ main(int argc, char *argv[])
|
||||
/* Determine the size of the device if not specified as -b or proto. */
|
||||
maxblocks = sizeup(argv[optind]);
|
||||
if (bblocks != 0 && bblocks + fs_offset_blocks > maxblocks && !insertmode) {
|
||||
errx(4, "Given size -b %d exceeds device capacity(%d)\n", bblocks, maxblocks);
|
||||
errx(4, "Given size -b %d exeeds device capacity(%d)\n", bblocks, maxblocks);
|
||||
}
|
||||
|
||||
if (argc - optind == 1 && bblocks == 0) {
|
||||
|
||||
@@ -82,11 +82,6 @@ SMP_FLAGS += -DCONFIG_MAX_CPUS=${CONFIG_MAX_CPUS}
|
||||
|
||||
CPPFLAGS+= ${SMP_FLAGS}
|
||||
|
||||
# Disabled unaligned accesses on ARM
|
||||
.if !empty(MACHINE_ARCH:Mearm*)
|
||||
CFLAGS+= -mno-unaligned-access
|
||||
.endif
|
||||
|
||||
__uname_s!= uname -s
|
||||
.if ${__uname_s:Uunknown} == "Minix"
|
||||
USETOOLS?= never
|
||||
|
||||
@@ -617,11 +617,7 @@ pci_subclass_name(pcireg_t reg)
|
||||
subclassp++;
|
||||
}
|
||||
|
||||
if (subclassp) {
|
||||
return subclassp->name;
|
||||
} else {
|
||||
return NULL;
|
||||
}
|
||||
return subclassp->name;
|
||||
}
|
||||
#endif /* defined(__minix) && defined(_PCI_SERVER) */
|
||||
|
||||
|
||||
Reference in New Issue
Block a user