Subversion Repositories HelenOS

Rev

Rev 3022 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 3022 Rev 4055
Line 327... Line 327...
327
.org trap_table + TT_FILL_1_NORMAL*ENTRY_SIZE
327
.org trap_table + TT_FILL_1_NORMAL*ENTRY_SIZE
328
.global fill_1_normal_tl0
328
.global fill_1_normal_tl0
329
fill_1_normal_tl0:
329
fill_1_normal_tl0:
330
	FILL_NORMAL_HANDLER_USERSPACE
330
	FILL_NORMAL_HANDLER_USERSPACE
331
 
331
 
332
/* TT = 0x100, TL = 0, trap_instruction_0 */
-
 
333
.org trap_table + TT_TRAP_INSTRUCTION(0)*ENTRY_SIZE
-
 
334
.global trap_instruction_0_tl0
-
 
335
trap_instruction_0_tl0:
-
 
336
	TRAP_INSTRUCTION 0
-
 
337
 
-
 
338
/* TT = 0x101, TL = 0, trap_instruction_1 */
-
 
339
.org trap_table + TT_TRAP_INSTRUCTION(1)*ENTRY_SIZE
-
 
340
.global trap_instruction_1_tl0
-
 
341
trap_instruction_1_tl0:
-
 
342
	TRAP_INSTRUCTION 1
-
 
343
 
-
 
344
/* TT = 0x102, TL = 0, trap_instruction_2 */
-
 
345
.org trap_table + TT_TRAP_INSTRUCTION(2)*ENTRY_SIZE
-
 
346
.global trap_instruction_2_tl0
-
 
347
trap_instruction_2_tl0:
-
 
348
	TRAP_INSTRUCTION 2
-
 
349
 
-
 
350
/* TT = 0x103, TL = 0, trap_instruction_3 */
-
 
351
.org trap_table + TT_TRAP_INSTRUCTION(3)*ENTRY_SIZE
-
 
352
.global trap_instruction_3_tl0
-
 
353
trap_instruction_3_tl0:
-
 
354
	TRAP_INSTRUCTION 3
-
 
355
 
-
 
356
/* TT = 0x104, TL = 0, trap_instruction_4 */
-
 
357
.org trap_table + TT_TRAP_INSTRUCTION(4)*ENTRY_SIZE
-
 
358
.global trap_instruction_4_tl0
-
 
359
trap_instruction_4_tl0:
-
 
360
	TRAP_INSTRUCTION 4
-
 
361
 
-
 
362
/* TT = 0x105, TL = 0, trap_instruction_5 */
-
 
363
.org trap_table + TT_TRAP_INSTRUCTION(5)*ENTRY_SIZE
-
 
364
.global trap_instruction_5_tl0
-
 
365
trap_instruction_5_tl0:
-
 
366
	TRAP_INSTRUCTION 5
-
 
367
 
-
 
368
/* TT = 0x106, TL = 0, trap_instruction_6 */
-
 
369
.org trap_table + TT_TRAP_INSTRUCTION(6)*ENTRY_SIZE
-
 
370
.global trap_instruction_6_tl0
-
 
371
trap_instruction_6_tl0:
-
 
372
	TRAP_INSTRUCTION 6
-
 
373
 
-
 
374
/* TT = 0x107, TL = 0, trap_instruction_7 */
332
/* TT = 0x100 - 0x17f, TL = 0, trap_instruction_0 - trap_instruction_7f */
375
.org trap_table + TT_TRAP_INSTRUCTION(7)*ENTRY_SIZE
-
 
376
.global trap_instruction_7_tl0
-
 
377
trap_instruction_7_tl0:
-
 
378
	TRAP_INSTRUCTION 7
-
 
379
 
-
 
380
/* TT = 0x108, TL = 0, trap_instruction_8 */
-
 
381
.org trap_table + TT_TRAP_INSTRUCTION(8)*ENTRY_SIZE
-
 
382
.global trap_instruction_8_tl0
-
 
383
trap_instruction_8_tl0:
-
 
384
	TRAP_INSTRUCTION 8
-
 
385
 
-
 
386
/* TT = 0x109, TL = 0, trap_instruction_9 */
-
 
387
.org trap_table + TT_TRAP_INSTRUCTION(9)*ENTRY_SIZE
-
 
388
.global trap_instruction_9_tl0
-
 
389
trap_instruction_9_tl0:
-
 
390
	TRAP_INSTRUCTION 9
-
 
391
 
-
 
392
/* TT = 0x10a, TL = 0, trap_instruction_10 */
-
 
393
.org trap_table + TT_TRAP_INSTRUCTION(10)*ENTRY_SIZE
-
 
394
.global trap_instruction_10_tl0
-
 
395
trap_instruction_10_tl0:
-
 
396
	TRAP_INSTRUCTION 10
-
 
397
 
-
 
398
/* TT = 0x10b, TL = 0, trap_instruction_11 */
333
.irp cur, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19,\
399
.org trap_table + TT_TRAP_INSTRUCTION(11)*ENTRY_SIZE
-
 
400
.global trap_instruction_11_tl0
-
 
401
trap_instruction_11_tl0:
-
 
402
	TRAP_INSTRUCTION 11
-
 
403
 
-
 
404
/* TT = 0x10c, TL = 0, trap_instruction_12 */
-
 
405
.org trap_table + TT_TRAP_INSTRUCTION(12)*ENTRY_SIZE
-
 
406
.global trap_instruction_12_tl0
-
 
407
trap_instruction_12_tl0:
-
 
408
	TRAP_INSTRUCTION 12
-
 
409
 
-
 
410
/* TT = 0x10d, TL = 0, trap_instruction_13 */
-
 
411
.org trap_table + TT_TRAP_INSTRUCTION(13)*ENTRY_SIZE
-
 
412
.global trap_instruction_13_tl0
-
 
413
trap_instruction_13_tl0:
-
 
414
	TRAP_INSTRUCTION 13
-
 
415
 
-
 
416
/* TT = 0x10e, TL = 0, trap_instruction_14 */
-
 
417
.org trap_table + TT_TRAP_INSTRUCTION(14)*ENTRY_SIZE
-
 
418
.global trap_instruction_14_tl0
-
 
419
trap_instruction_14_tl0:
-
 
420
	TRAP_INSTRUCTION 14
-
 
421
 
-
 
422
/* TT = 0x10f, TL = 0, trap_instruction_15 */
334
    20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38,\
423
.org trap_table + TT_TRAP_INSTRUCTION(15)*ENTRY_SIZE
-
 
424
.global trap_instruction_15_tl0
-
 
425
trap_instruction_15_tl0:
-
 
426
	TRAP_INSTRUCTION 15
-
 
427
 
-
 
428
/* TT = 0x110, TL = 0, trap_instruction_16 */
335
    39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57,\
429
.org trap_table + TT_TRAP_INSTRUCTION(16)*ENTRY_SIZE
-
 
430
.global trap_instruction_16_tl0
-
 
431
trap_instruction_16_tl0:
-
 
432
	TRAP_INSTRUCTION 16
-
 
433
 
-
 
434
/* TT = 0x111, TL = 0, trap_instruction_17 */
-
 
435
.org trap_table + TT_TRAP_INSTRUCTION(17)*ENTRY_SIZE
-
 
436
.global trap_instruction_17_tl0
-
 
437
trap_instruction_17_tl0:
-
 
438
	TRAP_INSTRUCTION 17
-
 
439
 
-
 
440
/* TT = 0x112, TL = 0, trap_instruction_18 */
336
    58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76,\
441
.org trap_table + TT_TRAP_INSTRUCTION(18)*ENTRY_SIZE
-
 
442
.global trap_instruction_18_tl0
-
 
443
trap_instruction_18_tl0:
-
 
444
	TRAP_INSTRUCTION 18
-
 
445
 
-
 
446
/* TT = 0x113, TL = 0, trap_instruction_19 */
337
    77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95,\
447
.org trap_table + TT_TRAP_INSTRUCTION(19)*ENTRY_SIZE
-
 
448
.global trap_instruction_19_tl0
-
 
449
trap_instruction_19_tl0:
-
 
450
	TRAP_INSTRUCTION 19
-
 
451
 
-
 
452
/* TT = 0x114, TL = 0, trap_instruction_20 */
338
    96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111,\
453
.org trap_table + TT_TRAP_INSTRUCTION(20)*ENTRY_SIZE
-
 
454
.global trap_instruction_20_tl0
-
 
455
trap_instruction_20_tl0:
-
 
456
	TRAP_INSTRUCTION 20
-
 
457
 
-
 
458
/* TT = 0x115, TL = 0, trap_instruction_21 */
339
    112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126,\
459
.org trap_table + TT_TRAP_INSTRUCTION(21)*ENTRY_SIZE
-
 
460
.global trap_instruction_21_tl0
-
 
461
trap_instruction_21_tl0:
-
 
462
	TRAP_INSTRUCTION 21
-
 
463
 
-
 
464
/* TT = 0x116, TL = 0, trap_instruction_22 */
-
 
465
.org trap_table + TT_TRAP_INSTRUCTION(22)*ENTRY_SIZE
-
 
466
.global trap_instruction_22_tl0
-
 
467
trap_instruction_22_tl0:
-
 
468
	TRAP_INSTRUCTION 22
-
 
469
 
-
 
470
/* TT = 0x117, TL = 0, trap_instruction_23 */
-
 
471
.org trap_table + TT_TRAP_INSTRUCTION(23)*ENTRY_SIZE
-
 
472
.global trap_instruction_23_tl0
-
 
473
trap_instruction_23_tl0:
-
 
474
	TRAP_INSTRUCTION 23
-
 
475
 
-
 
476
/* TT = 0x118, TL = 0, trap_instruction_24 */
-
 
477
.org trap_table + TT_TRAP_INSTRUCTION(24)*ENTRY_SIZE
-
 
478
.global trap_instruction_24_tl0
-
 
479
trap_instruction_24_tl0:
-
 
480
	TRAP_INSTRUCTION 24
-
 
481
 
-
 
482
/* TT = 0x119, TL = 0, trap_instruction_25 */
-
 
483
.org trap_table + TT_TRAP_INSTRUCTION(25)*ENTRY_SIZE
-
 
484
.global trap_instruction_25_tl0
-
 
485
trap_instruction_25_tl0:
-
 
486
	TRAP_INSTRUCTION 25
-
 
487
 
-
 
488
/* TT = 0x11a, TL = 0, trap_instruction_26 */
-
 
489
.org trap_table + TT_TRAP_INSTRUCTION(26)*ENTRY_SIZE
-
 
490
.global trap_instruction_26_tl0
-
 
491
trap_instruction_26_tl0:
-
 
492
	TRAP_INSTRUCTION 26
-
 
493
 
-
 
494
/* TT = 0x11b, TL = 0, trap_instruction_27 */
-
 
495
.org trap_table + TT_TRAP_INSTRUCTION(27)*ENTRY_SIZE
-
 
496
.global trap_instruction_27_tl0
-
 
497
trap_instruction_27_tl0:
-
 
498
	TRAP_INSTRUCTION 27
340
    127
499
 
-
 
500
/* TT = 0x11c, TL = 0, trap_instruction_28 */
-
 
501
.org trap_table + TT_TRAP_INSTRUCTION(28)*ENTRY_SIZE
341
.org trap_table + (TT_TRAP_INSTRUCTION_0+\cur)*ENTRY_SIZE
502
.global trap_instruction_28_tl0
342
.global trap_instruction_\cur\()_tl0
503
trap_instruction_28_tl0:
343
trap_instruction_\cur\()_tl0:
504
	TRAP_INSTRUCTION 28
-
 
505
 
-
 
506
/* TT = 0x11d, TL = 0, trap_instruction_29 */
-
 
507
.org trap_table + TT_TRAP_INSTRUCTION(29)*ENTRY_SIZE
-
 
508
.global trap_instruction_29_tl0
344
	ba trap_instruction_handler
509
trap_instruction_29_tl0:
-
 
510
	TRAP_INSTRUCTION 29
345
	mov \cur, %g2
511
 
-
 
512
/* TT = 0x11e, TL = 0, trap_instruction_30 */
-
 
513
.org trap_table + TT_TRAP_INSTRUCTION(30)*ENTRY_SIZE
-
 
514
.global trap_instruction_30_tl0
-
 
515
trap_instruction_30_tl0:
-
 
516
	TRAP_INSTRUCTION 30
-
 
517
 
346
.endr
518
/* TT = 0x11f, TL = 0, trap_instruction_31 */
-
 
519
.org trap_table + TT_TRAP_INSTRUCTION(31)*ENTRY_SIZE
-
 
520
.global trap_instruction_31_tl0
-
 
521
trap_instruction_31_tl0:
-
 
522
	TRAP_INSTRUCTION 31
-
 
523
 
347
 
524
/*
348
/*
525
 * Handlers for TL>0.
349
 * Handlers for TL>0.
526
 */
350
 */
527
 
351
 
Line 780... Line 604...
780
	 */
604
	 */
781
	call %l0
605
	call %l0
782
	add %sp, PREEMPTIBLE_HANDLER_STACK_FRAME_SIZE + STACK_BIAS + SAVED_TNPC, %o1
606
	add %sp, PREEMPTIBLE_HANDLER_STACK_FRAME_SIZE + STACK_BIAS + SAVED_TNPC, %o1
783
.else
607
.else
784
	/*
608
	/*
785
	 * Call the higher-level syscall handler.
609
	 * Call the higher-level syscall handler and enable interrupts.
786
	 */
610
	 */
787
	call syscall_handler
611
	call syscall_handler
788
	nop
-
 
-
 
612
	wrpr %g0, PSTATE_PRIV_BIT | PSTATE_PEF_BIT | PSTATE_IE_BIT, %pstate
789
	mov %o0, %i0				! copy the value returned by the syscall
613
	mov %o0, %i0				! copy the value returned by the syscall
790
.endif
614
.endif
791
 
615
 
792
	RESTORE_GLOBALS
616
	RESTORE_GLOBALS
793
	rdpr %pstate, %l1			! we must preserve the PEF bit
617
	rdpr %pstate, %l1			! we must preserve the PEF bit
Line 922... Line 746...
922
	/*
746
	/*
923
	 * CWP is now in the window last saved in the userspace window buffer.
747
	 * CWP is now in the window last saved in the userspace window buffer.
924
	 * Fill all windows stored in the buffer.
748
	 * Fill all windows stored in the buffer.
925
	 */
749
	 */
926
	clr %g4
750
	clr %g4
927
	set PAGE_SIZE - 1, %g5
-
 
928
0:	andcc %g7, %g5, %g0			! PAGE_SIZE alignment check
751
0:	andcc %g7, UWB_ALIGNMENT - 1, %g0	! alignment check
929
	bz 0f					! %g7 is page-aligned, no more windows to refill
752
	bz 0f					! %g7 is UWB_ALIGNMENT-aligned, no more windows to refill
930
	nop
753
	nop
931
 
754
 
932
	add %g7, -STACK_WINDOW_SAVE_AREA_SIZE, %g7
755
	add %g7, -STACK_WINDOW_SAVE_AREA_SIZE, %g7
933
	ldx [%g7 + L0_OFFSET], %l0
756
	ldx [%g7 + L0_OFFSET], %l0
934
	ldx [%g7 + L1_OFFSET], %l1
757
	ldx [%g7 + L1_OFFSET], %l1